Merge
This commit is contained in:
commit
e2b0df2fcf
@ -28,7 +28,7 @@ default: all
|
||||
include $(SPEC)
|
||||
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_CLOSED_SOURCE_DIR := $(JDK_TOPDIR)/src/closed/sample/share
|
||||
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 \
|
||||
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCalls.h \
|
||||
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgePackages.h \
|
||||
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCalls.c \
|
||||
$(CONF_DST_DIR)/accessibility.properties
|
||||
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCalls.c
|
||||
|
||||
$(INCLUDE_DST_OS_DIR)/bridge/%: \
|
||||
$(JDK_TOPDIR)/src/jdk.accessibility/windows/native/include/bridge/%
|
||||
$(install-file)
|
||||
|
||||
$(CONF_DST_DIR)/accessibility.properties: \
|
||||
$(JDK_TOPDIR)/src/jdk.accessibility/windows/conf/accessibility.properties
|
||||
$(install-file)
|
||||
|
||||
endif
|
||||
|
||||
################################################################################
|
||||
|
@ -21,4 +21,4 @@
|
||||
# or visit www.oracle.com if you need additional information or have any
|
||||
# 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
|
||||
# practice altogether in future years."
|
||||
#
|
||||
# From Paul Eggert (2015-04-20):
|
||||
# For now, assume DST will be canceled. Any resumption would likely
|
||||
# use different rules anyway.
|
||||
# From Paul Eggert (2015-04-24):
|
||||
# Yesterday the office of Egyptian President El-Sisi announced his
|
||||
# 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 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....
|
||||
# http://www.mmsp.gov.ma/fr/actualites.aspx?id=586
|
||||
|
||||
# From Paul Eggert (2014-06-05):
|
||||
# For now, guess that later spring and fall transitions will use 2014's rules,
|
||||
# From Milamber (2015-06-08):
|
||||
# (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
|
||||
# Saturday before Ramadan, and back to DST at 02:00 the first Saturday after
|
||||
# Ramadan. To implement this, transition dates for 2015 through 2037 were
|
||||
# Sunday before Ramadan, and back to DST at 02:00 the first Sunday after
|
||||
# Ramadan. To implement this, transition dates for 2016 through 2037 were
|
||||
# determined by running the following program under GNU Emacs 24.3, with the
|
||||
# results integrated by hand into the table below.
|
||||
# (let ((islamic-year 1436))
|
||||
# (let ((islamic-year 1437))
|
||||
# (require 'cal-islam)
|
||||
# (while (< islamic-year 1460)
|
||||
# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
|
||||
# (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
|
||||
# (saturday 6))
|
||||
# (while (/= saturday (mod (setq a (1- a)) 7)))
|
||||
# (while (/= saturday (mod b 7))
|
||||
# (sunday 0))
|
||||
# (while (/= sunday (mod (setq a (1- a)) 7)))
|
||||
# (while (/= sunday (mod b 7))
|
||||
# (setq b (1+ b)))
|
||||
# (setq a (calendar-gregorian-from-absolute a))
|
||||
# (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 - Aug 10 2:00 1:00 S
|
||||
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 - Aug 2 2:00 1:00 S
|
||||
Rule Morocco 2015 only - Jun 13 3:00 0 -
|
||||
Rule Morocco 2015 only - Jul 18 2:00 1:00 S
|
||||
Rule Morocco 2016 only - Jun 4 3:00 0 -
|
||||
Rule Morocco 2016 only - Jul 9 2:00 1:00 S
|
||||
Rule Morocco 2017 only - May 20 3:00 0 -
|
||||
Rule Morocco 2017 only - Jul 1 2:00 1:00 S
|
||||
Rule Morocco 2018 only - May 12 3:00 0 -
|
||||
Rule Morocco 2018 only - Jun 16 2:00 1:00 S
|
||||
Rule Morocco 2019 only - May 4 3:00 0 -
|
||||
Rule Morocco 2019 only - Jun 8 2:00 1:00 S
|
||||
Rule Morocco 2020 only - Apr 18 3:00 0 -
|
||||
Rule Morocco 2020 only - May 30 2:00 1:00 S
|
||||
Rule Morocco 2021 only - Apr 10 3:00 0 -
|
||||
Rule Morocco 2021 only - May 15 2:00 1:00 S
|
||||
Rule Morocco 2022 only - Apr 2 3:00 0 -
|
||||
Rule Morocco 2022 only - May 7 2:00 1:00 S
|
||||
Rule Morocco 2023 only - Apr 22 2:00 1:00 S
|
||||
Rule Morocco 2024 only - Apr 13 2:00 1:00 S
|
||||
Rule Morocco 2025 only - Apr 5 2:00 1:00 S
|
||||
Rule Morocco 2015 only - Jun 14 3:00 0 -
|
||||
Rule Morocco 2015 only - Jul 19 2:00 1:00 S
|
||||
Rule Morocco 2016 only - Jun 5 3:00 0 -
|
||||
Rule Morocco 2016 only - Jul 10 2:00 1:00 S
|
||||
Rule Morocco 2017 only - May 21 3:00 0 -
|
||||
Rule Morocco 2017 only - Jul 2 2:00 1:00 S
|
||||
Rule Morocco 2018 only - May 13 3:00 0 -
|
||||
Rule Morocco 2018 only - Jun 17 2:00 1:00 S
|
||||
Rule Morocco 2019 only - May 5 3:00 0 -
|
||||
Rule Morocco 2019 only - Jun 9 2:00 1:00 S
|
||||
Rule Morocco 2020 only - Apr 19 3:00 0 -
|
||||
Rule Morocco 2020 only - May 24 2:00 1:00 S
|
||||
Rule Morocco 2021 only - Apr 11 3:00 0 -
|
||||
Rule Morocco 2021 only - May 16 2:00 1:00 S
|
||||
Rule Morocco 2022 only - May 8 2:00 1:00 S
|
||||
Rule Morocco 2023 only - Apr 23 2:00 1:00 S
|
||||
Rule Morocco 2024 only - Apr 14 2:00 1:00 S
|
||||
Rule Morocco 2025 only - Apr 6 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 18 3:00 0 -
|
||||
Rule Morocco 2037 only - Oct 10 3:00 0 -
|
||||
Rule Morocco 2036 only - Oct 19 3:00 0 -
|
||||
Rule Morocco 2037 only - Oct 4 3:00 0 -
|
||||
|
||||
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
|
||||
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
|
||||
# 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
|
||||
# separated by a single tab. Lines beginning with '#' are comments.
|
||||
# Although all text currently uses ASCII encoding, this is planned to
|
||||
# change to UTF-8 soon. The columns of the table are as follows:
|
||||
# All text uses UTF-8 encoding. The columns of the table are as follows:
|
||||
#
|
||||
# 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
|
||||
@ -61,7 +60,7 @@ AS Samoa (American)
|
||||
AT Austria
|
||||
AU Australia
|
||||
AW Aruba
|
||||
AX Aaland Islands
|
||||
AX Åland Islands
|
||||
AZ Azerbaijan
|
||||
BA Bosnia & Herzegovina
|
||||
BB Barbados
|
||||
@ -90,7 +89,7 @@ CD Congo (Dem. Rep.)
|
||||
CF Central African Rep.
|
||||
CG Congo (Rep.)
|
||||
CH Switzerland
|
||||
CI Cote d'Ivoire
|
||||
CI Côte d'Ivoire
|
||||
CK Cook Islands
|
||||
CL Chile
|
||||
CM Cameroon
|
||||
@ -234,7 +233,7 @@ PT Portugal
|
||||
PW Palau
|
||||
PY Paraguay
|
||||
QA Qatar
|
||||
RE Reunion
|
||||
RE Réunion
|
||||
RO Romania
|
||||
RS Serbia
|
||||
RU Russia
|
||||
|
@ -2684,7 +2684,17 @@ Zone Atlantic/Bermuda -4:19:18 - LMT 1930 Jan 1 2:00 # Hamilton
|
||||
-4:00 US A%sT
|
||||
|
||||
# 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
|
||||
|
||||
@ -3207,7 +3217,6 @@ Zone America/Managua -5:45:08 - LMT 1890
|
||||
Zone America/Panama -5:18:08 - LMT 1890
|
||||
-5:19:36 - CMT 1908 Apr 22 # Colón Mean Time
|
||||
-5:00 - EST
|
||||
Link America/Panama America/Cayman
|
||||
|
||||
# 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
|
||||
# _daylight-saving time_. _Summer time_ seems to be in general use
|
||||
# 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
|
||||
#
|
||||
# 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_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_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)/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
|
||||
# Param 1 - module name
|
||||
|
@ -81,7 +81,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBNIO, \
|
||||
LDFLAGS_SUFFIX_windows := jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \
|
||||
$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libnet/net.lib \
|
||||
advapi32.lib, \
|
||||
LDFLAGS_SUFFIX_macosx := -ljava -lnet -pthread -framework CoreFoundation, \
|
||||
LDFLAGS_SUFFIX_macosx := -ljava -lnet -pthread \
|
||||
-framework CoreFoundation -framework CoreServices, \
|
||||
LDFLAGS_SUFFIX :=, \
|
||||
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
|
||||
RC_FLAGS := $(RC_FLAGS) \
|
||||
|
@ -228,7 +228,8 @@ public class ModuleArchive implements Archive {
|
||||
private static String nativeDir(String filename) {
|
||||
if (System.getProperty("os.name").startsWith("Windows")) {
|
||||
if (filename.endsWith(".dll") || filename.endsWith(".diz")
|
||||
|| filename.endsWith(".pdb") || filename.endsWith(".map")) {
|
||||
|| filename.endsWith(".pdb") || filename.endsWith(".map")
|
||||
|| filename.endsWith(".cpl")) {
|
||||
return "bin";
|
||||
} else {
|
||||
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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -49,6 +49,8 @@ public class MacOSXFileSystemProvider extends BsdFileSystemProvider {
|
||||
FileTypeDetector getFileTypeDetector() {
|
||||
Path userMimeTypes = Paths.get(AccessController.doPrivileged(
|
||||
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.
|
||||
* 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;
|
||||
|
||||
// Multiplies state0, state1 by V0, V1.
|
||||
private void blockMult(long V0, long V1) {
|
||||
// Multiplies state[0], state[1] by subkeyH[0], subkeyH[1].
|
||||
private static void blockMult(long[] st, long[] subH) {
|
||||
long Z0 = 0;
|
||||
long Z1 = 0;
|
||||
long V0 = subH[0];
|
||||
long V1 = subH[1];
|
||||
long X;
|
||||
|
||||
// Separate loops for processing state0 and state1.
|
||||
X = state0;
|
||||
// Separate loops for processing state[0] and state[1].
|
||||
X = st[0];
|
||||
for (int i = 0; i < 64; i++) {
|
||||
// Zi+1 = Zi if bit i of x is 0
|
||||
long mask = X >> 63;
|
||||
@ -89,7 +91,7 @@ final class GHASH {
|
||||
X <<= 1;
|
||||
}
|
||||
|
||||
X = state1;
|
||||
X = st[1];
|
||||
for (int i = 64; i < 127; i++) {
|
||||
// Zi+1 = Zi if bit i of x is 0
|
||||
long mask = X >> 63;
|
||||
@ -115,15 +117,18 @@ final class GHASH {
|
||||
Z1 ^= V1 & mask;
|
||||
|
||||
// Save result.
|
||||
state0 = Z0;
|
||||
state1 = Z1;
|
||||
st[0] = Z0;
|
||||
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
|
||||
private final long subkeyH0, subkeyH1;
|
||||
private final long[] subkeyH;
|
||||
|
||||
// buffer for storing hash
|
||||
private long state0, state1;
|
||||
private final long[] state;
|
||||
|
||||
// variables for save/restore calls
|
||||
private long stateSave0, stateSave1;
|
||||
@ -141,8 +146,10 @@ final class GHASH {
|
||||
if ((subkeyH == null) || subkeyH.length != AES_BLOCK_SIZE) {
|
||||
throw new ProviderException("Internal error");
|
||||
}
|
||||
this.subkeyH0 = getLong(subkeyH, 0);
|
||||
this.subkeyH1 = getLong(subkeyH, 8);
|
||||
state = new long[2];
|
||||
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.
|
||||
*/
|
||||
void reset() {
|
||||
state0 = 0;
|
||||
state1 = 0;
|
||||
state[0] = 0;
|
||||
state[1] = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Save the current snapshot of this GHASH object.
|
||||
*/
|
||||
void save() {
|
||||
stateSave0 = state0;
|
||||
stateSave1 = state1;
|
||||
stateSave0 = state[0];
|
||||
stateSave1 = state[1];
|
||||
}
|
||||
|
||||
/**
|
||||
* Restores this object using the saved snapshot.
|
||||
*/
|
||||
void restore() {
|
||||
state0 = stateSave0;
|
||||
state1 = stateSave1;
|
||||
state[0] = stateSave0;
|
||||
state[1] = stateSave1;
|
||||
}
|
||||
|
||||
private void processBlock(byte[] data, int ofs) {
|
||||
if (data.length - ofs < AES_BLOCK_SIZE) {
|
||||
throw new RuntimeException("need complete block");
|
||||
}
|
||||
state0 ^= getLong(data, ofs);
|
||||
state1 ^= getLong(data, ofs + 8);
|
||||
blockMult(subkeyH0, subkeyH1);
|
||||
private static void processBlock(byte[] data, int ofs, long[] st, long[] subH) {
|
||||
st[0] ^= getLong(data, ofs);
|
||||
st[1] ^= getLong(data, ofs + 8);
|
||||
blockMult(st, subH);
|
||||
}
|
||||
|
||||
void update(byte[] in) {
|
||||
@ -185,22 +189,57 @@ final class GHASH {
|
||||
}
|
||||
|
||||
void update(byte[] in, int inOfs, int inLen) {
|
||||
if (inLen - inOfs > in.length) {
|
||||
throw new RuntimeException("input length out of bound");
|
||||
if (inLen == 0) {
|
||||
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) {
|
||||
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) {
|
||||
processBlock(in, i);
|
||||
// These two checks are for C2 checking
|
||||
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[] result = new byte[AES_BLOCK_SIZE];
|
||||
putLong(result, 0, state0);
|
||||
putLong(result, 8, state1);
|
||||
putLong(result, 0, state[0]);
|
||||
putLong(result, 8, state[1]);
|
||||
reset();
|
||||
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.
|
||||
*
|
||||
* 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)) {
|
||||
// mgf algid
|
||||
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");
|
||||
}
|
||||
AlgorithmId params = AlgorithmId.parse(
|
||||
@ -144,7 +144,7 @@ public final class OAEPParameters extends AlgorithmParametersSpi {
|
||||
} else if (data.isContextSpecific((byte) 0x02)) {
|
||||
// pSource algid
|
||||
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");
|
||||
}
|
||||
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?
|
||||
for (;;) {
|
||||
// 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
|
||||
// then collect intermediate values
|
||||
int value0 = parseIntBefore(layout, dash);
|
||||
@ -1249,7 +1249,7 @@ class Attribute implements Comparable<Attribute> {
|
||||
dash = findCaseDash(layout, sofar);
|
||||
if (dash < 0) break;
|
||||
}
|
||||
result.append(layout.substring(sofar)); // collect the rest
|
||||
result.append(layout, sofar, layout.length()); // collect the rest
|
||||
return result.toString();
|
||||
}
|
||||
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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -34,8 +34,7 @@ package java.io;
|
||||
* @author Arthur van Hoff
|
||||
* @since 1.0
|
||||
*/
|
||||
public
|
||||
class BufferedOutputStream extends FilterOutputStream {
|
||||
public class BufferedOutputStream extends FilterOutputStream {
|
||||
/**
|
||||
* The internal buffer where data is stored.
|
||||
*/
|
||||
@ -90,6 +89,7 @@ class BufferedOutputStream extends FilterOutputStream {
|
||||
* @param b the byte to be written.
|
||||
* @exception IOException if an I/O error occurs.
|
||||
*/
|
||||
@Override
|
||||
public synchronized void write(int b) throws IOException {
|
||||
if (count >= buf.length) {
|
||||
flushBuffer();
|
||||
@ -113,6 +113,7 @@ class BufferedOutputStream extends FilterOutputStream {
|
||||
* @param len the number of bytes to write.
|
||||
* @exception IOException if an I/O error occurs.
|
||||
*/
|
||||
@Override
|
||||
public synchronized void write(byte b[], int off, int len) throws IOException {
|
||||
if (len >= buf.length) {
|
||||
/* 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.
|
||||
* @see java.io.FilterOutputStream#out
|
||||
*/
|
||||
@Override
|
||||
public synchronized void flush() throws IOException {
|
||||
flushBuffer();
|
||||
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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -41,13 +41,15 @@ package java.io;
|
||||
* @author Jonathan Payne
|
||||
* @since 1.0
|
||||
*/
|
||||
public
|
||||
class FilterOutputStream extends OutputStream {
|
||||
public class FilterOutputStream extends OutputStream {
|
||||
/**
|
||||
* The underlying output stream to be filtered.
|
||||
*/
|
||||
protected OutputStream out;
|
||||
|
||||
/**
|
||||
* Whether the stream is closed; implicitly initialized to false.
|
||||
*/
|
||||
private boolean closed;
|
||||
|
||||
/**
|
||||
@ -75,6 +77,7 @@ class FilterOutputStream extends OutputStream {
|
||||
* @param b the <code>byte</code>.
|
||||
* @exception IOException if an I/O error occurs.
|
||||
*/
|
||||
@Override
|
||||
public void write(int b) throws IOException {
|
||||
out.write(b);
|
||||
}
|
||||
@ -95,6 +98,7 @@ class FilterOutputStream extends OutputStream {
|
||||
* @exception IOException if an I/O error occurs.
|
||||
* @see java.io.FilterOutputStream#write(byte[], int, int)
|
||||
*/
|
||||
@Override
|
||||
public void write(byte b[]) throws IOException {
|
||||
write(b, 0, b.length);
|
||||
}
|
||||
@ -119,6 +123,7 @@ class FilterOutputStream extends OutputStream {
|
||||
* @exception IOException if an I/O error occurs.
|
||||
* @see java.io.FilterOutputStream#write(int)
|
||||
*/
|
||||
@Override
|
||||
public void write(byte b[], int off, int len) throws IOException {
|
||||
if ((off | len | (b.length - (len + off)) | (off + len)) < 0)
|
||||
throw new IndexOutOfBoundsException();
|
||||
@ -138,6 +143,7 @@ class FilterOutputStream extends OutputStream {
|
||||
* @exception IOException if an I/O error occurs.
|
||||
* @see java.io.FilterOutputStream#out
|
||||
*/
|
||||
@Override
|
||||
public void flush() throws IOException {
|
||||
out.flush();
|
||||
}
|
||||
@ -154,13 +160,40 @@ class FilterOutputStream extends OutputStream {
|
||||
* @see java.io.FilterOutputStream#flush()
|
||||
* @see java.io.FilterOutputStream#out
|
||||
*/
|
||||
@SuppressWarnings("try")
|
||||
@Override
|
||||
public void close() throws IOException {
|
||||
if (closed)
|
||||
if (closed) {
|
||||
return;
|
||||
}
|
||||
closed = true;
|
||||
try (OutputStream ostream = out) {
|
||||
|
||||
Throwable flushException = null;
|
||||
try {
|
||||
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
|
||||
*/
|
||||
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());
|
||||
int len = end - start;
|
||||
ensureCapacityInternal(count + len);
|
||||
for (int i = start, j = count; i < end; i++, j++)
|
||||
value[j] = s.charAt(i);
|
||||
if (s instanceof String) {
|
||||
((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;
|
||||
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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -25,10 +25,14 @@
|
||||
|
||||
package java.net;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Enumeration;
|
||||
import java.util.NoSuchElementException;
|
||||
import sun.security.action.*;
|
||||
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,
|
||||
@ -95,8 +99,8 @@ public final class NetworkInterface {
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method to return an Enumeration with all or a
|
||||
* subset of the InetAddresses bound to this network interface.
|
||||
* Get an Enumeration with 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
|
||||
@ -104,53 +108,56 @@ public final class NetworkInterface {
|
||||
* will be returned in the Enumeration. However, if the caller has the
|
||||
* {@link NetPermission}("getNetworkInformation") permission, then all
|
||||
* InetAddresses are returned.
|
||||
*
|
||||
* @return an Enumeration object with all or a subset of the InetAddresses
|
||||
* bound to this network interface
|
||||
* @see #inetAddresses()
|
||||
*/
|
||||
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 local_addrs[];
|
||||
private InetAddress[] getCheckedInetAddresses() {
|
||||
InetAddress[] local_addrs = new InetAddress[addrs.length];
|
||||
boolean trusted = true;
|
||||
|
||||
checkedAddresses() {
|
||||
local_addrs = new InetAddress[addrs.length];
|
||||
boolean trusted = true;
|
||||
|
||||
SecurityManager sec = System.getSecurityManager();
|
||||
if (sec != null) {
|
||||
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);
|
||||
SecurityManager sec = System.getSecurityManager();
|
||||
if (sec != null) {
|
||||
try {
|
||||
sec.checkPermission(new NetPermission("getNetworkInformation"));
|
||||
} catch (SecurityException e) {
|
||||
trusted = false;
|
||||
}
|
||||
}
|
||||
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
|
||||
* of this network interface
|
||||
* @see #subInterfaces()
|
||||
* @since 1.6
|
||||
*/
|
||||
public Enumeration<NetworkInterface> getSubInterfaces() {
|
||||
class subIFs implements Enumeration<NetworkInterface> {
|
||||
|
||||
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();
|
||||
return enumerationFromArray(childs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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}
|
||||
* contains at least one element, possibly representing a loopback
|
||||
* interface that only supports communication between entities on
|
||||
* Returns an {@code Enumeration} of all the interfaces on this machine. The
|
||||
* {@code Enumeration} contains at least one element, possibly representing
|
||||
* a loopback interface that only supports communication between entities on
|
||||
* this machine.
|
||||
*
|
||||
* NOTE: can use getNetworkInterfaces()+getInetAddresses()
|
||||
* to obtain all IP addresses for this node
|
||||
* @apiNote this method can be used in combination with
|
||||
* {@link #getInetAddresses()} to obtain all IP addresses for this node
|
||||
*
|
||||
* @return an Enumeration of NetworkInterfaces found on this machine
|
||||
* @exception SocketException if an I/O error occurs.
|
||||
* @see #networkInterfaces()
|
||||
*/
|
||||
|
||||
public static Enumeration<NetworkInterface> getNetworkInterfaces()
|
||||
throws SocketException {
|
||||
final NetworkInterface[] netifs = getAll();
|
||||
NetworkInterface[] netifs = getAll();
|
||||
assert netifs != null && netifs.length > 0;
|
||||
|
||||
// specified to return null if no network interfaces
|
||||
if (netifs == null)
|
||||
return null;
|
||||
return enumerationFromArray(netifs);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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<>() {
|
||||
private int i = 0;
|
||||
public NetworkInterface nextElement() {
|
||||
if (netifs != null && i < netifs.length) {
|
||||
NetworkInterface netif = netifs[i++];
|
||||
return netif;
|
||||
int i = 0;
|
||||
|
||||
@Override
|
||||
public T nextElement() {
|
||||
if (i < a.length) {
|
||||
return a[i++];
|
||||
} else {
|
||||
throw new NoSuchElementException();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
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()
|
||||
throws SocketException;
|
||||
|
||||
|
@ -2018,7 +2018,7 @@ public final class URI
|
||||
StringBuilder sb = new StringBuilder(base.length() + cn);
|
||||
// 5.2 (6a)
|
||||
if (i >= 0)
|
||||
sb.append(base.substring(0, i + 1));
|
||||
sb.append(base, 0, i + 1);
|
||||
// 5.2 (6b)
|
||||
sb.append(child);
|
||||
path = sb.toString();
|
||||
@ -2686,7 +2686,7 @@ public final class URI
|
||||
if (!match(c, lowMask, highMask)) {
|
||||
if (sb == null) {
|
||||
sb = new StringBuffer();
|
||||
sb.append(s.substring(0, i));
|
||||
sb.append(s, 0, i);
|
||||
}
|
||||
appendEscape(sb, (byte)c);
|
||||
} else {
|
||||
@ -2698,7 +2698,7 @@ public final class URI
|
||||
|| Character.isISOControl(c))) {
|
||||
if (sb == null) {
|
||||
sb = new StringBuffer();
|
||||
sb.append(s.substring(0, i));
|
||||
sb.append(s, 0, i);
|
||||
}
|
||||
appendEncoded(sb, c);
|
||||
} 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,6 +26,8 @@
|
||||
package java.security;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.stream.StreamSupport;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
* @return an enumeration of all the Permissions.
|
||||
* @see #elementsAsStream()
|
||||
*/
|
||||
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
|
||||
* 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.
|
||||
*
|
||||
* 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 = "
|
||||
+ algID.getOID());
|
||||
}
|
||||
if (!subjectPublicKeyAlgID.equals((Object)algID.getOID())) {
|
||||
if (!subjectPublicKeyAlgID.equals(algID.getOID())) {
|
||||
if (debug != null) {
|
||||
debug.println("X509CertSelector.match: "
|
||||
+ "subject public key alg IDs don't match");
|
||||
|
@ -329,8 +329,8 @@ final class MergeCollation {
|
||||
PatternEntry e = patterns.get(i);
|
||||
if (e.chars.regionMatches(0,entry.chars,0,
|
||||
e.chars.length())) {
|
||||
excessChars.append(entry.chars.substring(e.chars.length(),
|
||||
entry.chars.length()));
|
||||
excessChars.append(entry.chars, e.chars.length(),
|
||||
entry.chars.length());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1239,7 +1239,7 @@ public class MessageFormat extends Format {
|
||||
int lastOffset = 0;
|
||||
int last = result.length();
|
||||
for (int i = 0; i <= maxOffset; ++i) {
|
||||
result.append(pattern.substring(lastOffset, offsets[i]));
|
||||
result.append(pattern, lastOffset, offsets[i]);
|
||||
lastOffset = offsets[i];
|
||||
int argumentNumber = argumentNumbers[i];
|
||||
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()) {
|
||||
characterIterators.add(createAttributedCharacterIterator(
|
||||
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.
|
||||
*
|
||||
* 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 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
|
||||
* 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 c the collection for which an enumeration is to be returned.
|
||||
* @return an enumeration over the specified collection.
|
||||
|
@ -88,18 +88,22 @@ public class LinkedList<E>
|
||||
|
||||
/**
|
||||
* Pointer to first node.
|
||||
* Invariant: (first == null && last == null) ||
|
||||
* (first.prev == null && first.item != null)
|
||||
*/
|
||||
transient Node<E> first;
|
||||
|
||||
/**
|
||||
* Pointer to last node.
|
||||
* Invariant: (first == null && last == null) ||
|
||||
* (last.next == null && last.item != null)
|
||||
*/
|
||||
transient Node<E> last;
|
||||
|
||||
/*
|
||||
void dataStructureInvariants() {
|
||||
assert (size == 0)
|
||||
? (first == null && last == null)
|
||||
: (first.prev == null && last.next == null);
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -265,6 +265,10 @@ class JarFile extends ZipFile {
|
||||
public JarEntry nextElement() {
|
||||
return next();
|
||||
}
|
||||
|
||||
public Iterator<JarEntry> asIterator() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -526,6 +526,10 @@ class ZipFile implements ZipConstants, Closeable {
|
||||
return ze;
|
||||
}
|
||||
}
|
||||
|
||||
public Iterator<ZipEntry> asIterator() {
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -511,7 +511,7 @@ public class BytecodeName {
|
||||
if (s.charAt(0) != ESCAPE_C && i > 0)
|
||||
sb.append(NULL_ESCAPE);
|
||||
// append the string so far, which is unremarkable:
|
||||
sb.append(s.substring(0, i));
|
||||
sb.append(s, 0, i);
|
||||
}
|
||||
|
||||
// rewrite \ to \-, / to \|, etc.
|
||||
@ -544,7 +544,7 @@ public class BytecodeName {
|
||||
if (sb == null) {
|
||||
sb = new StringBuilder(s.length());
|
||||
// append the string so far, which is unremarkable:
|
||||
sb.append(s.substring(stringStart, i));
|
||||
sb.append(s, stringStart, i);
|
||||
}
|
||||
++i; // skip both characters
|
||||
c = oc;
|
||||
|
@ -451,7 +451,7 @@ public class ParseUtil {
|
||||
if (!match(c, lowMask, highMask) && !isEscaped(s, i)) {
|
||||
if (sb == null) {
|
||||
sb = new StringBuffer();
|
||||
sb.append(s.substring(0, i));
|
||||
sb.append(s, 0, i);
|
||||
}
|
||||
appendEscape(sb, (byte)c);
|
||||
} else {
|
||||
@ -463,7 +463,7 @@ public class ParseUtil {
|
||||
|| Character.isISOControl(c))) {
|
||||
if (sb == null) {
|
||||
sb = new StringBuffer();
|
||||
sb.append(s.substring(0, i));
|
||||
sb.append(s, 0, i);
|
||||
}
|
||||
appendEncoded(sb, c);
|
||||
} 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -41,6 +41,27 @@ public abstract class AbstractFileTypeDetector
|
||||
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,
|
||||
* 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.
|
||||
*
|
||||
* 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 {
|
||||
if (contentType.equals((Object)DATA_OID) ||
|
||||
contentType.equals((Object)OLD_DATA_OID) ||
|
||||
contentType.equals((Object)TIMESTAMP_TOKEN_INFO_OID)) {
|
||||
if (contentType.equals(DATA_OID) ||
|
||||
contentType.equals(OLD_DATA_OID) ||
|
||||
contentType.equals(TIMESTAMP_TOKEN_INFO_OID)) {
|
||||
if (content == null)
|
||||
return null;
|
||||
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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -182,13 +182,12 @@ public class PKCS7 {
|
||||
contentType = contentInfo.contentType;
|
||||
DerValue content = contentInfo.getContent();
|
||||
|
||||
if (contentType.equals((Object)ContentInfo.SIGNED_DATA_OID)) {
|
||||
if (contentType.equals(ContentInfo.SIGNED_DATA_OID)) {
|
||||
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
|
||||
parseOldSignedData(content);
|
||||
} else if (contentType.equals((Object)
|
||||
ContentInfo.NETSCAPE_CERT_SEQUENCE_OID)){
|
||||
} else if (contentType.equals(ContentInfo.NETSCAPE_CERT_SEQUENCE_OID)){
|
||||
parseNetscapeCertChain(content);
|
||||
} else {
|
||||
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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -307,7 +307,7 @@ public class SignerInfo implements DerEncoder {
|
||||
authenticatedAttributes.getAttributeValue(
|
||||
PKCS9Attribute.CONTENT_TYPE_OID);
|
||||
if (contentType == null ||
|
||||
!contentType.equals((Object)content.contentType))
|
||||
!contentType.equals(content.contentType))
|
||||
return null; // contentType does not match, bad SignerInfo
|
||||
|
||||
// now, check message digest
|
||||
|
@ -789,7 +789,7 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
||||
}
|
||||
}
|
||||
if (params != null) {
|
||||
if (algorithm.equals((Object)pbes2_OID)) {
|
||||
if (algorithm.equals(pbes2_OID)) {
|
||||
algParams = AlgorithmParameters.getInstance("PBES2");
|
||||
} else {
|
||||
algParams = AlgorithmParameters.getInstance("PBE");
|
||||
@ -926,7 +926,7 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
||||
private static String mapPBEParamsToAlgorithm(ObjectIdentifier algorithm,
|
||||
AlgorithmParameters algParams) throws NoSuchAlgorithmException {
|
||||
// Check for PBES2 algorithms
|
||||
if (algorithm.equals((Object)pbes2_OID) && algParams != null) {
|
||||
if (algorithm.equals(pbes2_OID) && algParams != null) {
|
||||
return algParams.toString();
|
||||
}
|
||||
return algorithm.toString();
|
||||
@ -1937,7 +1937,7 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
||||
ContentInfo authSafe = new ContentInfo(s);
|
||||
ObjectIdentifier contentType = authSafe.getContentType();
|
||||
|
||||
if (contentType.equals((Object)ContentInfo.DATA_OID)) {
|
||||
if (contentType.equals(ContentInfo.DATA_OID)) {
|
||||
authSafeData = authSafe.getData();
|
||||
} else /* signed data */ {
|
||||
throw new IOException("public key protected PKCS12 not supported");
|
||||
@ -1965,14 +1965,14 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
||||
safeContents = new ContentInfo(sci);
|
||||
contentType = safeContents.getContentType();
|
||||
safeContentsData = null;
|
||||
if (contentType.equals((Object)ContentInfo.DATA_OID)) {
|
||||
if (contentType.equals(ContentInfo.DATA_OID)) {
|
||||
|
||||
if (debug != null) {
|
||||
debug.println("Loading PKCS#7 data content-type");
|
||||
}
|
||||
|
||||
safeContentsData = safeContents.getData();
|
||||
} else if (contentType.equals((Object)ContentInfo.ENCRYPTED_DATA_OID)) {
|
||||
} else if (contentType.equals(ContentInfo.ENCRYPTED_DATA_OID)) {
|
||||
if (password == null) {
|
||||
|
||||
if (debug != null) {
|
||||
@ -2178,12 +2178,12 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
||||
+ bagValue.tag);
|
||||
}
|
||||
bagValue = bagValue.data.getDerValue();
|
||||
if (bagId.equals((Object)PKCS8ShroudedKeyBag_OID)) {
|
||||
if (bagId.equals(PKCS8ShroudedKeyBag_OID)) {
|
||||
PrivateKeyEntry kEntry = new PrivateKeyEntry();
|
||||
kEntry.protectedPrivKey = bagValue.toByteArray();
|
||||
bagItem = kEntry;
|
||||
privateKeyCount++;
|
||||
} else if (bagId.equals((Object)CertBag_OID)) {
|
||||
} else if (bagId.equals(CertBag_OID)) {
|
||||
DerInputStream cs = new DerInputStream(bagValue.toByteArray());
|
||||
DerValue[] certValues = cs.getSequence(2);
|
||||
ObjectIdentifier certId = certValues[0].getOID();
|
||||
@ -2198,7 +2198,7 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
||||
(new ByteArrayInputStream(certValue.getOctetString()));
|
||||
bagItem = cert;
|
||||
certificateCount++;
|
||||
} else if (bagId.equals((Object)SecretBag_OID)) {
|
||||
} else if (bagId.equals(SecretBag_OID)) {
|
||||
DerInputStream ss = new DerInputStream(bagValue.toByteArray());
|
||||
DerValue[] secretValues = ss.getSequence(2);
|
||||
ObjectIdentifier secretId = secretValues[0].getOID();
|
||||
@ -2249,12 +2249,12 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
|
||||
throw new IOException("Attribute " + attrId +
|
||||
" should have a value " + e.getMessage());
|
||||
}
|
||||
if (attrId.equals((Object)PKCS9FriendlyName_OID)) {
|
||||
if (attrId.equals(PKCS9FriendlyName_OID)) {
|
||||
alias = valSet[0].getBMPString();
|
||||
} else if (attrId.equals((Object)PKCS9LocalKeyId_OID)) {
|
||||
} else if (attrId.equals(PKCS9LocalKeyId_OID)) {
|
||||
keyId = valSet[0].getOctetString();
|
||||
} else if
|
||||
(attrId.equals((Object)TrustedKeyUsage_OID)) {
|
||||
(attrId.equals(TrustedKeyUsage_OID)) {
|
||||
trustedKeyUsage = new ObjectIdentifier[valSet.length];
|
||||
for (int k = 0; k < valSet.length; k++) {
|
||||
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.
|
||||
*
|
||||
* 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();
|
||||
for (AccessDescription description : descriptions) {
|
||||
if (description.getAccessMethod().equals((Object)
|
||||
if (description.getAccessMethod().equals(
|
||||
AccessDescription.Ad_OCSP_Id)) {
|
||||
|
||||
GeneralName generalName = description.getAccessLocation();
|
||||
|
@ -239,7 +239,7 @@ public final class OCSPResponse {
|
||||
// responseType
|
||||
derIn = tmp.data;
|
||||
ObjectIdentifier responseType = derIn.getOID();
|
||||
if (responseType.equals((Object)OCSP_BASIC_RESPONSE_OID)) {
|
||||
if (responseType.equals(OCSP_BASIC_RESPONSE_OID)) {
|
||||
if (debug != null) {
|
||||
debug.println("OCSP response type: basic");
|
||||
}
|
||||
@ -338,8 +338,7 @@ public final class OCSPResponse {
|
||||
debug.println("OCSP extension: " + ext);
|
||||
}
|
||||
// Only the NONCE extension is recognized
|
||||
if (ext.getExtensionId().equals((Object)
|
||||
OCSP.NONCE_EXTENSION_OID))
|
||||
if (ext.getExtensionId().equals(OCSP.NONCE_EXTENSION_OID))
|
||||
{
|
||||
nonce = ext.getExtensionValue();
|
||||
} else if (ext.isCritical()) {
|
||||
|
@ -202,7 +202,7 @@ class URICertStore extends CertStoreSpi {
|
||||
* object of a certificate's Authority Information Access Extension.
|
||||
*/
|
||||
static CertStore getInstance(AccessDescription ad) {
|
||||
if (!ad.getAccessMethod().equals((Object)
|
||||
if (!ad.getAccessMethod().equals(
|
||||
AccessDescription.Ad_CAISSUERS_Id)) {
|
||||
return null;
|
||||
}
|
||||
|
@ -232,7 +232,7 @@ public abstract class RSASignature extends SignatureSpi {
|
||||
throw new IOException("SEQUENCE length error");
|
||||
}
|
||||
AlgorithmId algId = AlgorithmId.parse(values[0]);
|
||||
if (algId.getOID().equals((Object)oid) == false) {
|
||||
if (algId.getOID().equals(oid) == false) {
|
||||
throw new IOException("ObjectIdentifier mismatch: "
|
||||
+ algId.getOID());
|
||||
}
|
||||
|
@ -1280,7 +1280,7 @@ public final class Main {
|
||||
Iterator<PKCS10Attribute> attrs = req.getAttributes().getAttributes().iterator();
|
||||
while (attrs.hasNext()) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
@ -2338,7 +2338,7 @@ public final class Main {
|
||||
req.getSubjectName(), pkey.getFormat(), pkey.getAlgorithm());
|
||||
for (PKCS10Attribute attr: req.getAttributes().getAttributes()) {
|
||||
ObjectIdentifier oid = attr.getAttributeId();
|
||||
if (oid.equals((Object)PKCS9Attribute.EXTENSION_REQUEST_OID)) {
|
||||
if (oid.equals(PKCS9Attribute.EXTENSION_REQUEST_OID)) {
|
||||
CertificateExtensions exts = (CertificateExtensions)attr.getAttributeValue();
|
||||
if (exts != null) {
|
||||
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.
|
||||
*
|
||||
* 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use equals((Object)oid)
|
||||
*/
|
||||
@Deprecated
|
||||
public boolean equals(ObjectIdentifier other) {
|
||||
return equals((Object)other);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*
|
||||
* 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
|
||||
// non-PrintableString chars
|
||||
if (this.oid.equals((Object)PKCS9Attribute.EMAIL_ADDRESS_OID) ||
|
||||
(this.oid.equals((Object)X500Name.DOMAIN_COMPONENT_OID) &&
|
||||
if (this.oid.equals(PKCS9Attribute.EMAIL_ADDRESS_OID) ||
|
||||
(this.oid.equals(X500Name.DOMAIN_COMPONENT_OID) &&
|
||||
PRESERVE_OLD_DC_ENCODING == false)) {
|
||||
// EmailAddress and DomainComponent must be IA5String
|
||||
return new DerValue(DerValue.tag_IA5String,
|
||||
@ -495,8 +495,8 @@ public class AVA implements DerEncoder {
|
||||
|
||||
// encode as PrintableString unless value contains
|
||||
// non-PrintableString chars
|
||||
if (this.oid.equals((Object)PKCS9Attribute.EMAIL_ADDRESS_OID) ||
|
||||
(this.oid.equals((Object)X500Name.DOMAIN_COMPONENT_OID) &&
|
||||
if (this.oid.equals(PKCS9Attribute.EMAIL_ADDRESS_OID) ||
|
||||
(this.oid.equals(X500Name.DOMAIN_COMPONENT_OID) &&
|
||||
PRESERVE_OLD_DC_ENCODING == false)) {
|
||||
// EmailAddress and DomainComponent must be IA5String
|
||||
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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -95,19 +95,19 @@ public final class AccessDescription {
|
||||
if (this == that) {
|
||||
return true;
|
||||
}
|
||||
return (accessMethod.equals((Object)that.getAccessMethod()) &&
|
||||
return (accessMethod.equals(that.getAccessMethod()) &&
|
||||
accessLocation.equals(that.getAccessLocation()));
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
String method = null;
|
||||
if (accessMethod.equals((Object)Ad_CAISSUERS_Id)) {
|
||||
if (accessMethod.equals(Ad_CAISSUERS_Id)) {
|
||||
method = "caIssuers";
|
||||
} else if (accessMethod.equals((Object)Ad_CAREPOSITORY_Id)) {
|
||||
} else if (accessMethod.equals(Ad_CAREPOSITORY_Id)) {
|
||||
method = "caRepository";
|
||||
} else if (accessMethod.equals((Object)Ad_TIMESTAMPING_Id)) {
|
||||
} else if (accessMethod.equals(Ad_TIMESTAMPING_Id)) {
|
||||
method = "timeStamping";
|
||||
} else if (accessMethod.equals((Object)Ad_OCSP_Id)) {
|
||||
} else if (accessMethod.equals(Ad_OCSP_Id)) {
|
||||
method = "ocsp";
|
||||
} else {
|
||||
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.
|
||||
*
|
||||
* 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 {
|
||||
for (String name: map.keySet()) {
|
||||
if (map.get(name).getExtensionId().equals((Object)oid)) {
|
||||
if (map.get(name).getExtensionId().equals(oid)) {
|
||||
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.
|
||||
*
|
||||
* 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) {
|
||||
if (other instanceof CertificatePolicyId)
|
||||
return id.equals((Object)
|
||||
((CertificatePolicyId) other).getIdentifier());
|
||||
return id.equals(((CertificatePolicyId) other).getIdentifier());
|
||||
else
|
||||
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.
|
||||
*
|
||||
* 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;
|
||||
if (critical != otherExt.critical)
|
||||
return false;
|
||||
if (!extensionId.equals((Object)otherExt.extensionId))
|
||||
if (!extensionId.equals(otherExt.extensionId))
|
||||
return false;
|
||||
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.
|
||||
*
|
||||
* 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 {
|
||||
for (AVA ava : subject.allAvas()) {
|
||||
ObjectIdentifier attrOID = ava.getObjectIdentifier();
|
||||
if (attrOID.equals((Object)PKCS9Attribute.EMAIL_ADDRESS_OID)) {
|
||||
if (attrOID.equals(PKCS9Attribute.EMAIL_ADDRESS_OID)) {
|
||||
String attrValue = ava.getValueString();
|
||||
if (attrValue != null) {
|
||||
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.
|
||||
*
|
||||
* 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;
|
||||
|
||||
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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -176,7 +176,7 @@ public class OtherName implements GeneralNameInterface {
|
||||
return false;
|
||||
}
|
||||
OtherName otherOther = (OtherName)other;
|
||||
if (!(otherOther.oid.equals((Object)oid))) {
|
||||
if (!(otherOther.oid.equals(oid))) {
|
||||
return false;
|
||||
}
|
||||
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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -321,7 +321,7 @@ public class RDN {
|
||||
*/
|
||||
DerValue findAttribute(ObjectIdentifier oid) {
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -414,7 +414,7 @@ public class X509CRLEntryImpl extends X509CRLEntry
|
||||
e.hasMoreElements();) {
|
||||
ex = e.nextElement();
|
||||
inCertOID = ex.getExtensionId();
|
||||
if (inCertOID.equals((Object)findOID)) {
|
||||
if (inCertOID.equals(findOID)) {
|
||||
crlExt = ex;
|
||||
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.
|
||||
*
|
||||
* 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();) {
|
||||
ex = e.nextElement();
|
||||
inCertOID = ex.getExtensionId();
|
||||
if (inCertOID.equals((Object)findOID)) {
|
||||
if (inCertOID.equals(findOID)) {
|
||||
crlExt = ex;
|
||||
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.
|
||||
*
|
||||
* 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;
|
||||
}
|
||||
for (Extension ex2: extensions.getAllExtensions()) {
|
||||
if (ex2.getExtensionId().equals((Object)oid)) {
|
||||
if (ex2.getExtensionId().equals(oid)) {
|
||||
//XXXX May want to consider cloning this
|
||||
return ex2;
|
||||
}
|
||||
@ -1395,7 +1395,7 @@ public class X509CertImpl extends X509Certificate implements DerEncoder {
|
||||
|
||||
for (Extension ex : exts.getAllExtensions()) {
|
||||
ObjectIdentifier inCertOID = ex.getExtensionId();
|
||||
if (inCertOID.equals((Object)findOID)) {
|
||||
if (inCertOID.equals(findOID)) {
|
||||
certExt = ex;
|
||||
break;
|
||||
}
|
||||
|
@ -1850,7 +1850,7 @@ public class UnicodeSet implements UnicodeMatcher {
|
||||
syntaxError(chars, "Invalid property pattern");
|
||||
}
|
||||
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;
|
||||
}
|
||||
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
|
||||
while (Character.isDigit(s.charAt(p++)))
|
||||
;
|
||||
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();
|
||||
}
|
||||
|
||||
|
@ -145,7 +145,7 @@ static struct vmdesc *knownVMs = NULL;
|
||||
static int knownVMsCount = 0;
|
||||
static int knownVMsLimit = 0;
|
||||
|
||||
static void GrowKnownVMs();
|
||||
static void GrowKnownVMs(int minimum);
|
||||
static int KnownVMIndex(const char* name);
|
||||
static void FreeKnownVMs();
|
||||
static jboolean IsWildCardEnabled();
|
||||
|
@ -65,8 +65,8 @@ class UnixFileSystem extends FileSystem {
|
||||
int n = len;
|
||||
while ((n > 0) && (pathname.charAt(n - 1) == '/')) n--;
|
||||
if (n == 0) return "/";
|
||||
StringBuffer sb = new StringBuffer(pathname.length());
|
||||
if (off > 0) sb.append(pathname.substring(0, off));
|
||||
StringBuilder sb = new StringBuilder(pathname.length());
|
||||
if (off > 0) sb.append(pathname, 0, off);
|
||||
char prevChar = 0;
|
||||
for (int i = off; i < n; 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -83,18 +83,6 @@ class MimeTypesFileTypeDetector extends AbstractFileTypeDetector {
|
||||
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
|
||||
* 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 */
|
||||
int src;
|
||||
char slash = this.slash;
|
||||
StringBuffer sb = new StringBuffer(len);
|
||||
StringBuilder sb = new StringBuilder(len);
|
||||
|
||||
if (off == 0) {
|
||||
/* Complete normalization, including prefix */
|
||||
@ -112,7 +112,7 @@ class WinNTFileSystem extends FileSystem {
|
||||
} else {
|
||||
/* Partial normalization */
|
||||
src = off;
|
||||
sb.append(path.substring(0, off));
|
||||
sb.append(path, 0, off);
|
||||
}
|
||||
|
||||
/* Remove redundant slashes from the remainder of the path, forcing all
|
||||
@ -156,8 +156,7 @@ class WinNTFileSystem extends FileSystem {
|
||||
}
|
||||
}
|
||||
|
||||
String rv = sb.toString();
|
||||
return rv;
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/* 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")
|
||||
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;
|
||||
while ((src < len) && isSlash(path.charAt(src))) src++;
|
||||
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();
|
||||
// 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));
|
||||
@ -283,7 +283,7 @@ public final class JRSUIControl {
|
||||
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.length != 4) throw new IllegalArgumentException("Rect must have four elements");
|
||||
|
||||
@ -292,7 +292,7 @@ public final class JRSUIControl {
|
||||
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();
|
||||
final double offsetChange = getNativeScrollBarOffsetChange(cfDictionaryPtr, priorEncodedProperties, currentEncodedProperties, x, y, w, h, offset, visibleAmount, extent);
|
||||
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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -25,14 +25,15 @@
|
||||
|
||||
package apple.laf;
|
||||
|
||||
import com.apple.laf.AquaImageFactory.NineSliceMetrics;
|
||||
|
||||
import apple.laf.JRSUIConstants.*;
|
||||
import sun.security.action.GetPropertyAction;
|
||||
|
||||
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 isSnowLeopardOrBelow = isMacOSXSnowLeopardOrBelow();
|
||||
|
||||
@ -48,7 +49,9 @@ public class JRSUIUtils {
|
||||
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
|
||||
String osVersion = AccessController.doPrivileged(new GetPropertyAction("os.version"));
|
||||
String[] fragments = osVersion.split("\\.");
|
||||
@ -99,12 +102,22 @@ public class JRSUIUtils {
|
||||
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);
|
||||
}
|
||||
|
||||
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) {
|
||||
return control.getScrollBarOffsetChange(x, y, w, h, offset, visibleAmount, extent);
|
||||
public static double getNativeOffsetChange(final JRSUIControl control,
|
||||
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 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);
|
||||
}
|
||||
}
|
||||
|
@ -26,8 +26,8 @@ package java.awt;
|
||||
|
||||
import java.beans.ConstructorProperties;
|
||||
import java.io.InputStream;
|
||||
import java.net.URL;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.security.PrivilegedExceptionAction;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Properties;
|
||||
@ -261,7 +261,7 @@ public class Cursor implements java.io.Serializable {
|
||||
* @throws IllegalArgumentException if the specified cursor type is
|
||||
* invalid
|
||||
*/
|
||||
static public Cursor getPredefinedCursor(int type) {
|
||||
public static Cursor getPredefinedCursor(int type) {
|
||||
if (type < Cursor.DEFAULT_CURSOR || type > Cursor.MOVE_CURSOR) {
|
||||
throw new IllegalArgumentException("illegal cursor type");
|
||||
}
|
||||
@ -286,7 +286,7 @@ public class Cursor implements java.io.Serializable {
|
||||
* <code>GraphicsEnvironment.isHeadless</code> returns true
|
||||
* @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 {
|
||||
GraphicsEnvironment.checkHeadless();
|
||||
Cursor cursor = systemCustomCursors.get(name);
|
||||
@ -330,18 +330,15 @@ public class Cursor implements java.io.Serializable {
|
||||
} catch (NumberFormatException nfe) {
|
||||
throw new AWTException("failed to parse hotspot property for cursor: " + name);
|
||||
}
|
||||
|
||||
try {
|
||||
final Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||
final String file = RESOURCE_PREFIX + fileName;
|
||||
|
||||
cursor = AccessController.doPrivileged(
|
||||
(PrivilegedExceptionAction<Cursor>) () -> {
|
||||
URL url = Cursor.class.getResource(file);
|
||||
Image image = toolkit.getImage(url);
|
||||
return toolkit.createCustomCursor(image, hotPoint,
|
||||
localized);
|
||||
});
|
||||
final Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||
final String file = RESOURCE_PREFIX + fileName;
|
||||
final InputStream in = AccessController.doPrivileged(
|
||||
(PrivilegedAction<InputStream>) () -> {
|
||||
return Cursor.class.getResourceAsStream(file);
|
||||
});
|
||||
try (in) {
|
||||
Image image = toolkit.createImage(in.readAllBytes());
|
||||
cursor = toolkit.createCustomCursor(image, hotPoint, localized);
|
||||
} catch (Exception e) {
|
||||
throw new AWTException(
|
||||
"Exception: " + e.getClass() + " " + e.getMessage() +
|
||||
@ -365,7 +362,7 @@ public class Cursor implements java.io.Serializable {
|
||||
*
|
||||
* @return the default cursor
|
||||
*/
|
||||
static public Cursor getDefaultCursor() {
|
||||
public static Cursor getDefaultCursor() {
|
||||
return getPredefinedCursor(Cursor.DEFAULT_CURSOR);
|
||||
}
|
||||
|
||||
|
@ -58,6 +58,14 @@ import sun.awt.PeerEvent;
|
||||
import sun.awt.SunToolkit;
|
||||
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
|
||||
* 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
|
||||
// file.
|
||||
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
|
||||
* '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.
|
||||
* Rethrow the AWTError but include the cause.
|
||||
*
|
||||
* <p>The assumption is made that assistive technology classes are supplied
|
||||
* as part of INSTALLED (as opposed to: BUNDLED) extensions or specified
|
||||
* on the class path
|
||||
* (and therefore can be loaded using the class loader returned by
|
||||
* a call to <code>ClassLoader.getSystemClassLoader</code>, whose
|
||||
* delegation parent is the extension class loader for installed
|
||||
* extensions).
|
||||
* @param s the error message
|
||||
* @param e the original exception
|
||||
* @throw the new AWTError including the cause (the original exception)
|
||||
*/
|
||||
private static void newAWTError(Throwable e, String s) {
|
||||
AWTError newAWTError = new AWTError(s);
|
||||
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() {
|
||||
// Load any assistive technologies
|
||||
if (atNames != null) {
|
||||
ClassLoader cl = ClassLoader.getSystemClassLoader();
|
||||
StringTokenizer parser = new StringTokenizer(atNames," ,");
|
||||
String atName;
|
||||
while (parser.hasMoreTokens()) {
|
||||
atName = parser.nextToken();
|
||||
Set<String> names = Arrays.stream(atNames.split(","))
|
||||
.map(String::trim)
|
||||
.collect(Collectors.toSet());
|
||||
final Map<String, AccessibilityProvider> providers = new HashMap<>();
|
||||
AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
|
||||
try {
|
||||
Class<?> clazz;
|
||||
if (cl != null) {
|
||||
clazz = cl.loadClass(atName);
|
||||
} else {
|
||||
clazz = Class.forName(atName);
|
||||
for (AccessibilityProvider p : ServiceLoader.load(AccessibilityProvider.class, cl)) {
|
||||
String name = p.getName();
|
||||
if (names.contains(name) && !providers.containsKey(name)) {
|
||||
p.activate();
|
||||
providers.put(name, p);
|
||||
}
|
||||
}
|
||||
clazz.newInstance();
|
||||
} catch (ClassNotFoundException e) {
|
||||
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);
|
||||
} catch (java.util.ServiceConfigurationError | Exception e) {
|
||||
newAWTError(e, "Could not load or activate service provider");
|
||||
}
|
||||
}
|
||||
return null;
|
||||
});
|
||||
names.stream()
|
||||
.filter(n -> !providers.containsKey(n))
|
||||
.forEach(Toolkit::fallbackToLoadClassForAT);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the default toolkit.
|
||||
* <p>
|
||||
* If a system property named <code>"java.awt.headless"</code> is set
|
||||
* to <code>true</code> then the headless implementation
|
||||
* of <code>Toolkit</code> is used.
|
||||
* If a system property named {@code "java.awt.headless"} is set
|
||||
* to {@code true} then the headless implementation
|
||||
* of {@code Toolkit} is used.
|
||||
* <p>
|
||||
* If there is no <code>"java.awt.headless"</code> or it is set to
|
||||
* <code>false</code> and there is a system property named
|
||||
* <code>"awt.toolkit"</code>,
|
||||
* If there is no {@code "java.awt.headless"} or it is set to
|
||||
* {@code false} and there is a system property named
|
||||
* {@code "awt.toolkit"},
|
||||
* 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
|
||||
* <code>Toolkit</code> is used.
|
||||
* {@code Toolkit} is used.
|
||||
* <p>
|
||||
* Also loads additional classes into the VM, using the property
|
||||
* '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(). This is done just after
|
||||
* the AWT toolkit is created. All errors are handled via an
|
||||
* AWTError exception.
|
||||
* @return the default toolkit.
|
||||
* If this Toolkit is not a headless implementation and if they exist, service
|
||||
* providers of {@link javax.accessibility.AccessibilityProvider} will be loaded
|
||||
* if specified by the system property
|
||||
* {@code javax.accessibility.assistive_technologies}.
|
||||
* <p>
|
||||
* An example of setting this property is to invoke Java with
|
||||
* {@code -Djavax.accessibility.assistive_technologies=MyServiceProvider}.
|
||||
* In addition to MyServiceProvider other service providers can be specified
|
||||
* using a comma separated list. Service providers are loaded after the AWT
|
||||
* toolkit is created. All errors are handled via an AWTError exception.
|
||||
* <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
|
||||
* if one could not be accessed or instantiated.
|
||||
* @see java.util.ServiceLoader
|
||||
* @see javax.accessibility.AccessibilityProvider
|
||||
*/
|
||||
public static synchronized Toolkit getDefaultToolkit() {
|
||||
if (toolkit == null) {
|
||||
@ -550,7 +598,9 @@ public abstract class Toolkit {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
loadAssistiveTechnologies();
|
||||
if (!GraphicsEnvironment.isHeadless()) {
|
||||
loadAssistiveTechnologies();
|
||||
}
|
||||
}
|
||||
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.
|
||||
*
|
||||
* 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
|
||||
if ( tabPane.isOpaque() ) {
|
||||
if (!c.isBackgroundSet() && (tabAreaBackground != null)) {
|
||||
Color background = c.getBackground();
|
||||
if (background instanceof UIResource && tabAreaBackground != null) {
|
||||
g.setColor(tabAreaBackground);
|
||||
}
|
||||
else {
|
||||
g.setColor( c.getBackground() );
|
||||
g.setColor(background);
|
||||
}
|
||||
switch ( tabPlacement ) {
|
||||
case LEFT:
|
||||
|
@ -291,7 +291,7 @@ public abstract class SunToolkit extends Toolkit
|
||||
// Maps from non-Component/MenuComponent to AppContext.
|
||||
// WeakHashMap<Component,AppContext>
|
||||
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
|
||||
|
@ -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;
|
||||
le_uint16 featureCount = 0;
|
||||
le_uint16 lookupListCount = 0;
|
||||
le_uint16 requiredFeatureIndex;
|
||||
le_uint16 requiredFeatureIndex = 0xFFFF;
|
||||
|
||||
if (LE_FAILURE(success)) {
|
||||
return;
|
||||
|
@ -260,7 +260,9 @@ cmsBool _MultiplyMatrix(cmsPipeline* Lut)
|
||||
cmsStage* Multmat = cmsStageAllocMatrix(Lut->ContextID, 3, 3, (const cmsFloat64Number*) &res, NULL);
|
||||
|
||||
// Recover the chain
|
||||
Multmat->Next = chain;
|
||||
if (Multmat != NULL) {
|
||||
Multmat->Next = chain;
|
||||
}
|
||||
*pt1 = Multmat;
|
||||
}
|
||||
|
||||
|
@ -2466,7 +2466,7 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
|
||||
|
||||
private static XEventDispatcher oops_waiter;
|
||||
private static boolean oops_updated;
|
||||
private static boolean oops_move;
|
||||
private static int oops_position = 0;
|
||||
|
||||
/**
|
||||
* @inheritDoc
|
||||
@ -2495,9 +2495,12 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
|
||||
oops_updated = false;
|
||||
long event_number = getEventNumber();
|
||||
// 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
|
||||
oops_move = !oops_move;
|
||||
if (oops_position > 50) {
|
||||
oops_position = 0;
|
||||
}
|
||||
|
||||
XSync();
|
||||
|
||||
eventLog.finer("Generated OOPS ConfigureNotify event");
|
||||
|
@ -29,6 +29,7 @@ import java.awt.Image;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
@ -233,6 +234,7 @@ final class Win32ShellFolder2 extends ShellFolder {
|
||||
private Image smallIcon = null;
|
||||
private Image largeIcon = null;
|
||||
private Boolean isDir = null;
|
||||
private final boolean isLib;
|
||||
|
||||
/*
|
||||
* 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
|
||||
// other special shell folders.
|
||||
super(null, composePathForCsidl(csidl));
|
||||
isLib = false;
|
||||
|
||||
invoke(new Callable<Void>() {
|
||||
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
|
||||
// has a continued ID list. Create a shell folder for this child
|
||||
// pidl and make it the new 'parent'.
|
||||
parent = new Win32ShellFolder2((Win32ShellFolder2) parent, childPIDL);
|
||||
parent = createShellFolder((Win32ShellFolder2) parent, childPIDL);
|
||||
} else {
|
||||
// No grandchildren means we have arrived at the parent of 'this',
|
||||
// and childPIDL is directly relative to parent.
|
||||
@ -301,8 +304,9 @@ final class Win32ShellFolder2 extends ShellFolder {
|
||||
/**
|
||||
* 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: ");
|
||||
this.isLib = isLib;
|
||||
this.disposer.pIShellFolder = pIShellFolder;
|
||||
this.disposer.relativePIDL = relativePIDL;
|
||||
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
|
||||
*/
|
||||
Win32ShellFolder2(final Win32ShellFolder2 parent, final long relativePIDL) throws InterruptedException {
|
||||
super(parent,
|
||||
invoke(new Callable<String>() {
|
||||
public String call() {
|
||||
return getFileSystemPath(parent.getIShellFolder(), relativePIDL);
|
||||
}
|
||||
}, RuntimeException.class)
|
||||
);
|
||||
this.disposer.relativePIDL = relativePIDL;
|
||||
sun.java2d.Disposer.addRecord(this, disposer);
|
||||
static Win32ShellFolder2 createShellFolder(Win32ShellFolder2 parent, long pIDL)
|
||||
throws InterruptedException {
|
||||
String path = invoke(new Callable<String>() {
|
||||
public String call() {
|
||||
return getFileSystemPath(parent.getIShellFolder(), pIDL);
|
||||
}
|
||||
}, RuntimeException.class);
|
||||
String libPath = resolveLibrary(path);
|
||||
if (libPath == null) {
|
||||
return new Win32ShellFolder2(parent, 0, pIDL, path, false);
|
||||
} else {
|
||||
return new Win32ShellFolder2(parent, 0, pIDL, libPath, true);
|
||||
}
|
||||
}
|
||||
|
||||
// Initializes the desktop shell folder
|
||||
@ -601,20 +608,24 @@ final class Win32ShellFolder2 extends ShellFolder {
|
||||
}
|
||||
String path = getDisplayNameOf(parentIShellFolder, relativePIDL,
|
||||
SHGDN_FORPARSING);
|
||||
return path;
|
||||
}
|
||||
|
||||
private static String resolveLibrary(String 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
|
||||
if( path != null && path.startsWith("::{") &&
|
||||
path.toLowerCase().endsWith(".library-ms")) {
|
||||
for (KnownFolderDefinition kf : KnownFolderDefinition.libraries) {
|
||||
if( path.toLowerCase().endsWith(
|
||||
kf.relativePath.toLowerCase()) &&
|
||||
path.toUpperCase().startsWith(
|
||||
kf.parsingName.substring(0, 40).toUpperCase()) ) {
|
||||
if (path.toLowerCase().endsWith(
|
||||
"\\" + kf.relativePath.toLowerCase()) &&
|
||||
path.toUpperCase().startsWith(
|
||||
kf.parsingName.substring(0, 40).toUpperCase())) {
|
||||
return kf.saveLocation;
|
||||
}
|
||||
}
|
||||
}
|
||||
return path;
|
||||
return null;
|
||||
}
|
||||
|
||||
// Needs to be accessible to Win32ShellFolderManager2
|
||||
@ -750,7 +761,7 @@ final class Win32ShellFolder2 extends ShellFolder {
|
||||
&& pidlsEqual(pIShellFolder, childPIDL, personal.disposer.relativePIDL)) {
|
||||
childFolder = personal;
|
||||
} else {
|
||||
childFolder = new Win32ShellFolder2(Win32ShellFolder2.this, childPIDL);
|
||||
childFolder = createShellFolder(Win32ShellFolder2.this, childPIDL);
|
||||
releasePIDL = false;
|
||||
}
|
||||
list.add(childFolder);
|
||||
@ -790,10 +801,11 @@ final class Win32ShellFolder2 extends ShellFolder {
|
||||
while ((childPIDL = getNextChild(pEnumObjects)) != 0) {
|
||||
if (getAttributes0(pIShellFolder, childPIDL, ATTRIB_FILESYSTEM) != 0) {
|
||||
String path = getFileSystemPath(pIShellFolder, childPIDL);
|
||||
if(isLib) path = resolveLibrary( path );
|
||||
if (path != null && path.equalsIgnoreCase(filePath)) {
|
||||
long childIShellFolder = bindToObject(pIShellFolder, childPIDL);
|
||||
child = new Win32ShellFolder2(Win32ShellFolder2.this,
|
||||
childIShellFolder, childPIDL, path);
|
||||
childIShellFolder, childPIDL, path, isLib);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -839,14 +851,14 @@ final class Win32ShellFolder2 extends ShellFolder {
|
||||
return getLinkLocation(true);
|
||||
}
|
||||
|
||||
private ShellFolder getLinkLocation(final boolean resolve) {
|
||||
return invoke(new Callable<ShellFolder>() {
|
||||
public ShellFolder call() {
|
||||
private Win32ShellFolder2 getLinkLocation(final boolean resolve) {
|
||||
return invoke(new Callable<Win32ShellFolder2>() {
|
||||
public Win32ShellFolder2 call() {
|
||||
if (!isLink()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
ShellFolder location = null;
|
||||
Win32ShellFolder2 location = null;
|
||||
long linkLocationPIDL = getLinkLocation(getParentIShellFolder(),
|
||||
getRelativePIDL(), resolve);
|
||||
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
|
||||
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
|
||||
private static native long getSystemIcon(int iconID);
|
||||
@ -1007,7 +1019,13 @@ final class Win32ShellFolder2 extends ShellFolder {
|
||||
invoke(new Callable<Image>() {
|
||||
public Image call() {
|
||||
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)
|
||||
? ((Win32ShellFolder2) parent).getIShellIcon()
|
||||
: 0L;
|
||||
@ -1037,7 +1055,19 @@ final class Win32ShellFolder2 extends ShellFolder {
|
||||
if (newIcon == null) {
|
||||
// These are only cached per object
|
||||
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);
|
||||
disposeIcon(hIcon);
|
||||
}
|
||||
@ -1129,6 +1159,8 @@ final class Win32ShellFolder2 extends ShellFolder {
|
||||
private static final int LVCFMT_CENTER = 2;
|
||||
|
||||
public ShellFolderColumnInfo[] getFolderColumns() {
|
||||
ShellFolder library = resolveLibrary();
|
||||
if (library != null) return library.getFolderColumns();
|
||||
return invoke(new Callable<ShellFolderColumnInfo[]>() {
|
||||
public ShellFolderColumnInfo[] call() {
|
||||
ShellFolderColumnInfo[] columns = doGetColumnInfo(getIShellFolder());
|
||||
@ -1159,6 +1191,10 @@ final class Win32ShellFolder2 extends ShellFolder {
|
||||
}
|
||||
|
||||
public Object getFolderColumnValue(final int column) {
|
||||
if(!isLibrary()) {
|
||||
ShellFolder library = resolveLibrary();
|
||||
if (library != null) return library.getFolderColumnValue(column);
|
||||
}
|
||||
return invoke(new Callable<Object>() {
|
||||
public Object call() {
|
||||
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
|
||||
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.
|
||||
*
|
||||
* 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) {
|
||||
long curPIDL = Win32ShellFolder2.copyFirstPIDLEntry(pIDL);
|
||||
if (curPIDL != 0) {
|
||||
parent = new Win32ShellFolder2(parent, curPIDL);
|
||||
parent = Win32ShellFolder2.createShellFolder(parent, curPIDL);
|
||||
pIDL = Win32ShellFolder2.getNextPIDLEntry(pIDL);
|
||||
} else {
|
||||
// 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
|
||||
* Method: extractIcon
|
||||
* Signature: (JJZ)J
|
||||
* Signature: (JJZZ)J
|
||||
*/
|
||||
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;
|
||||
LPITEMIDLIST pidl = (LPITEMIDLIST)relativePIDL;
|
||||
@ -889,7 +890,8 @@ JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon
|
||||
WCHAR szBuf[MAX_PATH];
|
||||
INT index;
|
||||
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)) {
|
||||
HICON hIconLarge;
|
||||
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);
|
||||
}
|
||||
}
|
||||
} else if (hres == E_PENDING) {
|
||||
pIcon->Release();
|
||||
return E_PENDING;
|
||||
}
|
||||
pIcon->Release();
|
||||
}
|
||||
@ -1284,7 +1289,6 @@ JNIEXPORT jint JNICALL
|
||||
JNIEXPORT jobjectArray JNICALL Java_sun_awt_shell_Win32ShellFolder2_loadKnownFolders
|
||||
(JNIEnv* env, jclass cls )
|
||||
{
|
||||
CoInitialize(NULL);
|
||||
IKnownFolderManager* pkfm = NULL;
|
||||
HRESULT hr = CoCreateInstance(CLSID_KnownFolderManager, NULL,
|
||||
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.
|
||||
//
|
||||
// This code is free software; you can redistribute it and/or modify it
|
||||
@ -31,7 +31,6 @@
|
||||
|
||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||
|
||||
HAND_CURSOR CURSOR DISCARDABLE "hand.cur"
|
||||
AWT_ICON ICON DISCARDABLE "awt.ico"
|
||||
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.
|
||||
*
|
||||
* 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;
|
||||
break;
|
||||
case java_awt_Cursor_HAND_CURSOR:
|
||||
winCursor = TEXT("HAND_CURSOR");
|
||||
winCursor = IDC_HAND;
|
||||
break;
|
||||
case java_awt_Cursor_MOVE_CURSOR:
|
||||
winCursor = IDC_SIZEALL;
|
||||
|
Binary file not shown.
Before Width: | Height: | 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -157,7 +157,7 @@ public class Oid {
|
||||
return (true);
|
||||
|
||||
if (other instanceof Oid)
|
||||
return this.oid.equals((Object)((Oid) other).oid);
|
||||
return this.oid.equals(((Oid) other).oid);
|
||||
else if (other instanceof ObjectIdentifier)
|
||||
return this.oid.equals(other);
|
||||
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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -252,7 +252,7 @@ public class GSSContextImpl implements GSSContext {
|
||||
} else {
|
||||
// parse GSS header
|
||||
gssHeader = new GSSHeader(inStream);
|
||||
if (!gssHeader.getOid().equals((Object) objId))
|
||||
if (!gssHeader.getOid().equals(objId))
|
||||
throw new GSSExceptionImpl
|
||||
(GSSException.DEFECTIVE_TOKEN,
|
||||
"Mechanism not equal to " +
|
||||
@ -346,7 +346,7 @@ public class GSSContextImpl implements GSSContext {
|
||||
} else {
|
||||
// parse GSS Header
|
||||
gssHeader = new GSSHeader(inStream);
|
||||
if (!gssHeader.getOid().equals((Object) objId))
|
||||
if (!gssHeader.getOid().equals(objId))
|
||||
throw new GSSExceptionImpl
|
||||
(GSSException.DEFECTIVE_TOKEN,
|
||||
"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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -182,7 +182,7 @@ abstract class MessageToken extends Krb5Token {
|
||||
try {
|
||||
gssHeader = new GSSHeader(is);
|
||||
|
||||
if (!gssHeader.getOid().equals((Object)OID)) {
|
||||
if (!gssHeader.getOid().equals(OID)) {
|
||||
throw new GSSException(GSSException.DEFECTIVE_TOKEN, -1,
|
||||
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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -25,11 +25,17 @@
|
||||
|
||||
package java.sql;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Enumeration;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.ServiceLoader;
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import sun.reflect.CallerSensitive;
|
||||
import sun.reflect.Reflection;
|
||||
|
||||
@ -429,29 +435,44 @@ public class DriverManager {
|
||||
* <CODE>d.getClass().getName()</CODE>
|
||||
*
|
||||
* @return the list of JDBC Drivers loaded by the caller's class loader
|
||||
* @see #drivers()
|
||||
*/
|
||||
@CallerSensitive
|
||||
public static java.util.Enumeration<Driver> getDrivers() {
|
||||
java.util.Vector<Driver> result = new java.util.Vector<>();
|
||||
|
||||
public static Enumeration<Driver> getDrivers() {
|
||||
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.
|
||||
for (DriverInfo aDriver : registeredDrivers) {
|
||||
// If the caller does not have permission to load the driver then
|
||||
// skip it.
|
||||
if (isDriverAllowed(aDriver.driver, callerClass)) {
|
||||
result.addElement(aDriver.driver);
|
||||
result.add(aDriver.driver);
|
||||
} else {
|
||||
println(" skipping: " + aDriver.getClass().getName());
|
||||
}
|
||||
}
|
||||
return (result.elements());
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sets the maximum time in seconds that a driver will wait
|
||||
* while attempting to connect to a database once the driver has
|
||||
|
@ -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
|
||||
|
@ -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 <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <windows.h>
|
||||
#include <BaseTsd.h>
|
||||
#include <wincrypt.h>
|
||||
@ -58,11 +59,16 @@ void ThrowException(JNIEnv *env, char *exceptionName, DWORD dwError)
|
||||
char szMessage[1024];
|
||||
szMessage[0] = '\0';
|
||||
|
||||
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, NULL, szMessage,
|
||||
1024, NULL);
|
||||
DWORD res = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError,
|
||||
NULL, szMessage, sizeof(szMessage), NULL);
|
||||
if (res == 0) {
|
||||
strcpy(szMessage, "Unknown error");
|
||||
}
|
||||
|
||||
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
|
||||
jclass clazzArrayList = env->FindClass("java/util/ArrayList");
|
||||
if (clazzArrayList == NULL) {
|
||||
__leave;
|
||||
}
|
||||
|
||||
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",
|
||||
"([BLjava/util/Collection;)V");
|
||||
if (mGenCert == NULL) {
|
||||
__leave;
|
||||
}
|
||||
|
||||
// Determine method ID to generate certificate chain
|
||||
jmethodID mGenCertChain = env->GetMethodID(env->GetObjectClass(obj),
|
||||
jmethodID mGenCertChain = env->GetMethodID(clazzOfThis,
|
||||
"generateCertificateChain",
|
||||
"(Ljava/lang/String;Ljava/util/Collection;Ljava/util/Collection;)V");
|
||||
if (mGenCertChain == NULL) {
|
||||
__leave;
|
||||
}
|
||||
|
||||
// Determine method ID to generate RSA certificate chain
|
||||
jmethodID mGenRSAKeyAndCertChain = env->GetMethodID(env->GetObjectClass(obj),
|
||||
jmethodID mGenRSAKeyAndCertChain = env->GetMethodID(clazzOfThis,
|
||||
"generateRSAKeyAndCertificateChain",
|
||||
"(Ljava/lang/String;JJILjava/util/Collection;Ljava/util/Collection;)V");
|
||||
if (mGenRSAKeyAndCertChain == NULL) {
|
||||
__leave;
|
||||
}
|
||||
|
||||
// Use CertEnumCertificatesInStore to get the certificates
|
||||
// from the open store. pCertContext must be reset to
|
||||
@ -590,9 +616,6 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_RSASignature_signHash
|
||||
}
|
||||
__finally
|
||||
{
|
||||
if (hCryptProvAlt)
|
||||
::CryptReleaseContext(hCryptProvAlt, 0);
|
||||
|
||||
if (pSignedHashBuffer)
|
||||
delete [] pSignedHashBuffer;
|
||||
|
||||
@ -601,6 +624,9 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_RSASignature_signHash
|
||||
|
||||
if (hHash)
|
||||
::CryptDestroyHash(hHash);
|
||||
|
||||
if (hCryptProvAlt)
|
||||
::CryptReleaseContext(hCryptProvAlt, 0);
|
||||
}
|
||||
|
||||
return jSignedHash;
|
||||
@ -688,9 +714,6 @@ JNIEXPORT jboolean JNICALL Java_sun_security_mscapi_RSASignature_verifySignedHas
|
||||
|
||||
__finally
|
||||
{
|
||||
if (hCryptProvAlt)
|
||||
::CryptReleaseContext(hCryptProvAlt, 0);
|
||||
|
||||
if (pSignedHashBuffer)
|
||||
delete [] pSignedHashBuffer;
|
||||
|
||||
@ -699,6 +722,9 @@ JNIEXPORT jboolean JNICALL Java_sun_security_mscapi_RSASignature_verifySignedHas
|
||||
|
||||
if (hHash)
|
||||
::CryptDestroyHash(hHash);
|
||||
|
||||
if (hCryptProvAlt)
|
||||
::CryptReleaseContext(hCryptProvAlt, 0);
|
||||
}
|
||||
|
||||
return result;
|
||||
@ -763,9 +789,15 @@ JNIEXPORT jobject JNICALL Java_sun_security_mscapi_RSAKeyPairGenerator_generateR
|
||||
// Get the method ID for the RSAKeyPair constructor
|
||||
jclass clazzRSAKeyPair =
|
||||
env->FindClass("sun/security/mscapi/RSAKeyPair");
|
||||
if (clazzRSAKeyPair == NULL) {
|
||||
__leave;
|
||||
}
|
||||
|
||||
jmethodID mNewRSAKeyPair =
|
||||
env->GetMethodID(clazzRSAKeyPair, "<init>", "(JJI)V");
|
||||
if (mNewRSAKeyPair == NULL) {
|
||||
__leave;
|
||||
}
|
||||
|
||||
// Create a new RSA keypair
|
||||
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
|
||||
jclass clazzRSAPrivateKey =
|
||||
env->FindClass("sun/security/mscapi/RSAPrivateKey");
|
||||
if (clazzRSAPrivateKey == NULL) {
|
||||
__leave;
|
||||
}
|
||||
|
||||
jmethodID mNewRSAPrivateKey =
|
||||
env->GetMethodID(clazzRSAPrivateKey, "<init>", "(JJI)V");
|
||||
if (mNewRSAPrivateKey == NULL) {
|
||||
__leave;
|
||||
}
|
||||
|
||||
// Create a new RSA private key
|
||||
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
|
||||
jclass clazzRSAPublicKey =
|
||||
env->FindClass("sun/security/mscapi/RSAPublicKey");
|
||||
if (clazzRSAPublicKey == NULL) {
|
||||
__leave;
|
||||
}
|
||||
|
||||
jmethodID mNewRSAPublicKey =
|
||||
env->GetMethodID(clazzRSAPublicKey, "<init>", "(JJI)V");
|
||||
if (mNewRSAPublicKey == NULL) {
|
||||
__leave;
|
||||
}
|
||||
|
||||
// Create a new RSA public key
|
||||
publicKey = env->NewObject(clazzRSAPublicKey, mNewRSAPublicKey,
|
||||
|
@ -169,7 +169,7 @@ public final class TimestampedSigner extends ContentSigner {
|
||||
for (int i = 0; i < derValue.length; i++) {
|
||||
description = new AccessDescription(derValue[i]);
|
||||
if (description.getAccessMethod()
|
||||
.equals((Object)AD_TIMESTAMPING_Id)) {
|
||||
.equals(AD_TIMESTAMPING_Id)) {
|
||||
location = description.getAccessLocation();
|
||||
if (location.getType() == GeneralNameInterface.NAME_URI) {
|
||||
uri = (URIName) location.getName();
|
||||
|
@ -116,6 +116,12 @@
|
||||
|
||||
# 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
|
||||
@ -221,9 +227,6 @@ sun/security/pkcs11/ec/TestKeyFactory.java generic-all
|
||||
# 7164518: no PortUnreachableException on Mac
|
||||
sun/security/krb5/auto/Unreachable.java macosx-all
|
||||
|
||||
# 8058849
|
||||
sun/security/krb5/config/dns.sh generic-all
|
||||
|
||||
# 7041639: Solaris DSA keypair generation bug
|
||||
java/security/KeyPairGenerator/SolarisShortDSA.java 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/TestPremaster.java windows-all
|
||||
|
||||
# 8051770
|
||||
sun/security/provider/SecureRandom/StrongSecureRandom.java macosx-10.10
|
||||
|
||||
############################################################################
|
||||
|
||||
# jdk_sound
|
||||
|
||||
# 8059743
|
||||
javax/sound/midi/Gervill/SoftProvider/GetDevice.java generic-all
|
||||
|
||||
############################################################################
|
||||
|
||||
# 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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,6 +26,7 @@
|
||||
* @bug 8007267
|
||||
* @summary [macosx] com.apple.eawt.Application.setDefaultMenuBar is not working
|
||||
* @author leonid.romanov@oracle.com
|
||||
* @modules java.desktop/sun.awt
|
||||
* @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.
|
||||
*
|
||||
* 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
|
||||
@author anthony.petrov@sun.com: area=awt.toplevel
|
||||
@library ../../../../java/awt/regtesthelpers
|
||||
@modules java.desktop/com.sun.awt
|
||||
java.desktop/sun.awt
|
||||
@build Util CustomSecurityManager CopyClassFile
|
||||
@run main CopyClassFile CustomSecurityManager bootcp/
|
||||
@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.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -26,6 +26,7 @@
|
||||
@bug 6594131
|
||||
@summary Tests the AWTUtilities.get/setWindowOpacity() methods
|
||||
@author anthony.petrov@...: area=awt.toplevel
|
||||
@modules java.desktop/com.sun.awt
|
||||
@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.
|
||||
*
|
||||
* 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.spec.*;
|
||||
import java.security.Provider;
|
||||
import com.sun.crypto.provider.*;
|
||||
|
||||
public class Test4511676 {
|
||||
private static final String ALGO = "AES";
|
||||
@ -59,7 +58,6 @@ public class Test4511676 {
|
||||
}
|
||||
|
||||
public static void main (String[] args) throws Exception {
|
||||
Security.addProvider(new com.sun.crypto.provider.SunJCE());
|
||||
|
||||
Test4511676 test = new Test4511676();
|
||||
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.
|
||||
*
|
||||
* 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.spec.*;
|
||||
import java.security.Provider;
|
||||
import com.sun.crypto.provider.*;
|
||||
|
||||
public class Test4512524 {
|
||||
|
||||
@ -65,8 +64,6 @@ public class Test4512524 {
|
||||
}
|
||||
|
||||
public static void main (String[] args) throws Exception {
|
||||
Security.addProvider(new com.sun.crypto.provider.SunJCE());
|
||||
|
||||
Test4512524 test = new Test4512524();
|
||||
test.execute("CBC");
|
||||
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.
|
||||
*
|
||||
* 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.spec.*;
|
||||
import java.security.Provider;
|
||||
import com.sun.crypto.provider.*;
|
||||
|
||||
public class Test4512704 {
|
||||
private static final String ALGO = "AES";
|
||||
@ -61,8 +60,6 @@ public class Test4512704 {
|
||||
}
|
||||
|
||||
public static void main (String[] args) throws Exception {
|
||||
Security.addProvider(new com.sun.crypto.provider.SunJCE());
|
||||
|
||||
Test4512704 test = new Test4512704();
|
||||
test.execute("CBC");
|
||||
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.
|
||||
*
|
||||
* 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 {
|
||||
Security.addProvider(new com.sun.crypto.provider.SunJCE());
|
||||
|
||||
Test4513830 test = new Test4513830();
|
||||
String testName = test.getClass().getName() + "[" + ALGO +
|
||||
"/" + 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.
|
||||
*
|
||||
* 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.spec.*;
|
||||
import java.security.Provider;
|
||||
import com.sun.crypto.provider.*;
|
||||
|
||||
public class Test4517355 {
|
||||
|
||||
@ -93,8 +92,6 @@ public class Test4517355 {
|
||||
}
|
||||
|
||||
public static void main (String[] args) throws Exception {
|
||||
Security.addProvider(new com.sun.crypto.provider.SunJCE());
|
||||
|
||||
Test4517355 test = new Test4517355();
|
||||
Random rdm = new Random();
|
||||
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.
|
||||
*
|
||||
* 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 {
|
||||
Security.addProvider(new com.sun.crypto.provider.SunJCE());
|
||||
|
||||
Test4626070 test = new Test4626070();
|
||||
test.execute("CBC", "PKCS5Padding");
|
||||
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