This commit is contained in:
Lana Steuck 2015-07-02 16:08:47 -07:00
commit e2b0df2fcf
784 changed files with 5484 additions and 2149 deletions
jdk
make
src
java.base
java.desktop
macosx/classes/apple/laf
share
unix/classes/sun/awt/X11
windows
java.security.jgss/share/classes
org/ietf/jgss
sun/security/jgss
java.sql/share/classes/java/sql
jdk.accessibility/windows
jdk.crypto.mscapi/windows/native/libsunmscapi
jdk.jartool/share/classes/sun/security/tools/jarsigner
test

@ -28,7 +28,7 @@ default: all
include $(SPEC) include $(SPEC)
include MakeBase.gmk include MakeBase.gmk
SAMPLE_TARGET_DIR := $(SUPPORT_OUTPUTDIR)/sample SAMPLE_TARGET_DIR := $(SUPPORT_OUTPUTDIR)/sample/image
SAMPLE_SOURCE_DIR := $(JDK_TOPDIR)/src/sample/share SAMPLE_SOURCE_DIR := $(JDK_TOPDIR)/src/sample/share
SAMPLE_CLOSED_SOURCE_DIR := $(JDK_TOPDIR)/src/closed/sample/share SAMPLE_CLOSED_SOURCE_DIR := $(JDK_TOPDIR)/src/closed/sample/share
SAMPLE_SOLARIS_SOURCE_DIR := $(JDK_TOPDIR)/src/sample/solaris SAMPLE_SOLARIS_SOURCE_DIR := $(JDK_TOPDIR)/src/sample/solaris

@ -31,17 +31,12 @@ ifeq ($(OPENJDK_TARGET_OS), windows)
TARGETS += $(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCallbacks.h \ TARGETS += $(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCallbacks.h \
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCalls.h \ $(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCalls.h \
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgePackages.h \ $(INCLUDE_DST_OS_DIR)/bridge/AccessBridgePackages.h \
$(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCalls.c \ $(INCLUDE_DST_OS_DIR)/bridge/AccessBridgeCalls.c
$(CONF_DST_DIR)/accessibility.properties
$(INCLUDE_DST_OS_DIR)/bridge/%: \ $(INCLUDE_DST_OS_DIR)/bridge/%: \
$(JDK_TOPDIR)/src/jdk.accessibility/windows/native/include/bridge/% $(JDK_TOPDIR)/src/jdk.accessibility/windows/native/include/bridge/%
$(install-file) $(install-file)
$(CONF_DST_DIR)/accessibility.properties: \
$(JDK_TOPDIR)/src/jdk.accessibility/windows/conf/accessibility.properties
$(install-file)
endif endif
################################################################################ ################################################################################

@ -21,4 +21,4 @@
# or visit www.oracle.com if you need additional information or have any # or visit www.oracle.com if you need additional information or have any
# questions. # questions.
# #
tzdata2015d tzdata2015e

@ -361,9 +361,10 @@ Rule Egypt 2007 only - Sep Thu>=1 24:00 0 -
# time this summer, and carry out studies on the possibility of canceling the # time this summer, and carry out studies on the possibility of canceling the
# practice altogether in future years." # practice altogether in future years."
# #
# From Paul Eggert (2015-04-20): # From Paul Eggert (2015-04-24):
# For now, assume DST will be canceled. Any resumption would likely # Yesterday the office of Egyptian President El-Sisi announced his
# use different rules anyway. # decision to abandon DST permanently. See Ahram Online 2015-04-24.
# http://english.ahram.org.eg/NewsContent/1/64/128509/Egypt/Politics-/Sisi-cancels-daylight-saving-time-in-Egypt.aspx
Rule Egypt 2008 only - Aug lastThu 24:00 0 - Rule Egypt 2008 only - Aug lastThu 24:00 0 -
Rule Egypt 2009 only - Aug 20 24:00 0 - Rule Egypt 2009 only - Aug 20 24:00 0 -
@ -810,20 +811,41 @@ Zone Indian/Mauritius 3:50:00 - LMT 1907 # Port Louis
# will resume again at 02:00 on Saturday, August 2, 2014.... # will resume again at 02:00 on Saturday, August 2, 2014....
# http://www.mmsp.gov.ma/fr/actualites.aspx?id=586 # http://www.mmsp.gov.ma/fr/actualites.aspx?id=586
# From Paul Eggert (2014-06-05): # From Milamber (2015-06-08):
# For now, guess that later spring and fall transitions will use 2014's rules, # (Google Translation) The hour will thus be delayed 60 minutes
# Sunday, June 14 at 3:00, the ministry said in a statement, adding
# that the time will be advanced again 60 minutes Sunday, July 19,
# 2015 at 2:00. The move comes under 2.12.126 Decree of 26 Jumada I
# 1433 (18 April 2012) and the decision of the Head of Government of
# 16 N. 3-29-15 Chaaban 1435 (4 June 2015).
# Source (french):
# http://lnt.ma/le-maroc-reculera-dune-heure-le-dimanche-14-juin/
#
# From Milamber (2015-06-09):
# http://www.mmsp.gov.ma/fr/actualites.aspx?id=863
#
# From Michael Deckers (2015-06-09):
# [The gov.ma announcement] would (probably) make the switch on 2015-07-19 go
# from 03:00 to 04:00 rather than from 02:00 to 03:00, as in the patch....
# I think the patch is correct and the quoted text is wrong; the text in
# <http://lnt.ma/le-maroc-reculera-dune-heure-le-dimanche-14-juin/> agrees
# with the patch.
# From Paul Eggert (2015-06-08):
# For now, guess that later spring and fall transitions will use 2015's rules,
# and guess that Morocco will switch to standard time at 03:00 the last # and guess that Morocco will switch to standard time at 03:00 the last
# Saturday before Ramadan, and back to DST at 02:00 the first Saturday after # Sunday before Ramadan, and back to DST at 02:00 the first Sunday after
# Ramadan. To implement this, transition dates for 2015 through 2037 were # Ramadan. To implement this, transition dates for 2016 through 2037 were
# determined by running the following program under GNU Emacs 24.3, with the # determined by running the following program under GNU Emacs 24.3, with the
# results integrated by hand into the table below. # results integrated by hand into the table below.
# (let ((islamic-year 1436)) # (let ((islamic-year 1437))
# (require 'cal-islam)
# (while (< islamic-year 1460) # (while (< islamic-year 1460)
# (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year))) # (let ((a (calendar-islamic-to-absolute (list 9 1 islamic-year)))
# (b (calendar-islamic-to-absolute (list 10 1 islamic-year))) # (b (calendar-islamic-to-absolute (list 10 1 islamic-year)))
# (saturday 6)) # (sunday 0))
# (while (/= saturday (mod (setq a (1- a)) 7))) # (while (/= sunday (mod (setq a (1- a)) 7)))
# (while (/= saturday (mod b 7)) # (while (/= sunday (mod b 7))
# (setq b (1+ b))) # (setq b (1+ b)))
# (setq a (calendar-gregorian-from-absolute a)) # (setq a (calendar-gregorian-from-absolute a))
# (setq b (calendar-gregorian-from-absolute b)) # (setq b (calendar-gregorian-from-absolute b))
@ -867,32 +889,30 @@ Rule Morocco 2012 only - Aug 20 2:00 1:00 S
Rule Morocco 2013 only - Jul 7 3:00 0 - Rule Morocco 2013 only - Jul 7 3:00 0 -
Rule Morocco 2013 only - Aug 10 2:00 1:00 S Rule Morocco 2013 only - Aug 10 2:00 1:00 S
Rule Morocco 2013 max - Oct lastSun 3:00 0 - Rule Morocco 2013 max - Oct lastSun 3:00 0 -
Rule Morocco 2014 2022 - Mar lastSun 2:00 1:00 S Rule Morocco 2014 2021 - Mar lastSun 2:00 1:00 S
Rule Morocco 2014 only - Jun 28 3:00 0 - Rule Morocco 2014 only - Jun 28 3:00 0 -
Rule Morocco 2014 only - Aug 2 2:00 1:00 S Rule Morocco 2014 only - Aug 2 2:00 1:00 S
Rule Morocco 2015 only - Jun 13 3:00 0 - Rule Morocco 2015 only - Jun 14 3:00 0 -
Rule Morocco 2015 only - Jul 18 2:00 1:00 S Rule Morocco 2015 only - Jul 19 2:00 1:00 S
Rule Morocco 2016 only - Jun 4 3:00 0 - Rule Morocco 2016 only - Jun 5 3:00 0 -
Rule Morocco 2016 only - Jul 9 2:00 1:00 S Rule Morocco 2016 only - Jul 10 2:00 1:00 S
Rule Morocco 2017 only - May 20 3:00 0 - Rule Morocco 2017 only - May 21 3:00 0 -
Rule Morocco 2017 only - Jul 1 2:00 1:00 S Rule Morocco 2017 only - Jul 2 2:00 1:00 S
Rule Morocco 2018 only - May 12 3:00 0 - Rule Morocco 2018 only - May 13 3:00 0 -
Rule Morocco 2018 only - Jun 16 2:00 1:00 S Rule Morocco 2018 only - Jun 17 2:00 1:00 S
Rule Morocco 2019 only - May 4 3:00 0 - Rule Morocco 2019 only - May 5 3:00 0 -
Rule Morocco 2019 only - Jun 8 2:00 1:00 S Rule Morocco 2019 only - Jun 9 2:00 1:00 S
Rule Morocco 2020 only - Apr 18 3:00 0 - Rule Morocco 2020 only - Apr 19 3:00 0 -
Rule Morocco 2020 only - May 30 2:00 1:00 S Rule Morocco 2020 only - May 24 2:00 1:00 S
Rule Morocco 2021 only - Apr 10 3:00 0 - Rule Morocco 2021 only - Apr 11 3:00 0 -
Rule Morocco 2021 only - May 15 2:00 1:00 S Rule Morocco 2021 only - May 16 2:00 1:00 S
Rule Morocco 2022 only - Apr 2 3:00 0 - Rule Morocco 2022 only - May 8 2:00 1:00 S
Rule Morocco 2022 only - May 7 2:00 1:00 S Rule Morocco 2023 only - Apr 23 2:00 1:00 S
Rule Morocco 2023 only - Apr 22 2:00 1:00 S Rule Morocco 2024 only - Apr 14 2:00 1:00 S
Rule Morocco 2024 only - Apr 13 2:00 1:00 S Rule Morocco 2025 only - Apr 6 2:00 1:00 S
Rule Morocco 2025 only - Apr 5 2:00 1:00 S
Rule Morocco 2026 max - Mar lastSun 2:00 1:00 S Rule Morocco 2026 max - Mar lastSun 2:00 1:00 S
Rule Morocco 2035 only - Oct 27 3:00 0 - Rule Morocco 2036 only - Oct 19 3:00 0 -
Rule Morocco 2036 only - Oct 18 3:00 0 - Rule Morocco 2037 only - Oct 4 3:00 0 -
Rule Morocco 2037 only - Oct 10 3:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL] # Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26 Zone Africa/Casablanca -0:30:20 - LMT 1913 Oct 26

@ -26,11 +26,10 @@
# This file is in the public domain, so clarified as of # This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson. # 2009-05-17 by Arthur David Olson.
# #
# From Paul Eggert (2014-07-18): # From Paul Eggert (2015-05-02):
# This file contains a table of two-letter country codes. Columns are # This file contains a table of two-letter country codes. Columns are
# separated by a single tab. Lines beginning with '#' are comments. # separated by a single tab. Lines beginning with '#' are comments.
# Although all text currently uses ASCII encoding, this is planned to # All text uses UTF-8 encoding. The columns of the table are as follows:
# change to UTF-8 soon. The columns of the table are as follows:
# #
# 1. ISO 3166-1 alpha-2 country code, current as of # 1. ISO 3166-1 alpha-2 country code, current as of
# ISO 3166-1 Newsletter VI-16 (2013-07-11). See: Updates on ISO 3166 # ISO 3166-1 Newsletter VI-16 (2013-07-11). See: Updates on ISO 3166
@ -61,7 +60,7 @@ AS Samoa (American)
AT Austria AT Austria
AU Australia AU Australia
AW Aruba AW Aruba
AX Aaland Islands AX Åland Islands
AZ Azerbaijan AZ Azerbaijan
BA Bosnia & Herzegovina BA Bosnia & Herzegovina
BB Barbados BB Barbados
@ -90,7 +89,7 @@ CD Congo (Dem. Rep.)
CF Central African Rep. CF Central African Rep.
CG Congo (Rep.) CG Congo (Rep.)
CH Switzerland CH Switzerland
CI Cote d'Ivoire CI Côte d'Ivoire
CK Cook Islands CK Cook Islands
CL Chile CL Chile
CM Cameroon CM Cameroon
@ -234,7 +233,7 @@ PT Portugal
PW Palau PW Palau
PY Paraguay PY Paraguay
QA Qatar QA Qatar
RE Reunion RE Réunion
RO Romania RO Romania
RS Serbia RS Serbia
RU Russia RU Russia

@ -2684,7 +2684,17 @@ Zone Atlantic/Bermuda -4:19:18 - LMT 1930 Jan 1 2:00 # Hamilton
-4:00 US A%sT -4:00 US A%sT
# Cayman Is # Cayman Is
# See America/Panama.
# From Paul Eggert (2015-05-15):
# The Cayman government has decided to introduce DST in 2016, the idea being
# to keep in sync with New York. The legislation hasn't passed but the change
# seems quite likely. See: Meade B. Cayman 27.
# http://www.cayman27.com.ky/2015/05/15/clock-ticks-toward-daylight-saving-time-in-cayman
Zone America/Cayman -5:25:32 - LMT 1890 # Georgetown
-5:07:11 - KMT 1912 Feb # Kingston Mean Time
-5:00 - EST 2016
-5:00 US E%sT
# Costa Rica # Costa Rica
@ -3207,7 +3217,6 @@ Zone America/Managua -5:45:08 - LMT 1890
Zone America/Panama -5:18:08 - LMT 1890 Zone America/Panama -5:18:08 - LMT 1890
-5:19:36 - CMT 1908 Apr 22 # Colón Mean Time -5:19:36 - CMT 1908 Apr 22 # Colón Mean Time
-5:00 - EST -5:00 - EST
Link America/Panama America/Cayman
# Puerto Rico # Puerto Rico
# There are too many San Juans elsewhere, so we'll use 'Puerto_Rico'. # There are too many San Juans elsewhere, so we'll use 'Puerto_Rico'.

@ -53,7 +53,7 @@
# I suggest the use of _Summer time_ instead of the more cumbersome # I suggest the use of _Summer time_ instead of the more cumbersome
# _daylight-saving time_. _Summer time_ seems to be in general use # _daylight-saving time_. _Summer time_ seems to be in general use
# in Europe and South America. # in Europe and South America.
# --E O Cutler, _New York Times_ (1937-02-14), quoted in # -- E O Cutler, _New York Times_ (1937-02-14), quoted in
# H L Mencken, _The American Language: Supplement I_ (1960), p 466 # H L Mencken, _The American Language: Supplement I_ (1960), p 466
# #
# Earlier editions of these tables also used the North American style # Earlier editions of these tables also used the North American style

@ -29,7 +29,7 @@ CLDRSRCDIR := $(JDK_TOPDIR)/src/jdk.localedata/share/classes/sun/util/cldr/resou
GENSRC_BASEDIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.base GENSRC_BASEDIR := $(SUPPORT_OUTPUTDIR)/gensrc/java.base
GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.localedata GENSRC_DIR := $(SUPPORT_OUTPUTDIR)/gensrc/jdk.localedata
CLDR_BASEMETAINFO_FILE := $(GENSRC_DIR)/sun/util/cldr/CLDRBaseLocaleDataMetaInfo.java CLDR_BASEMETAINFO_FILE := $(GENSRC_BASEDIR)/sun/util/cldr/CLDRBaseLocaleDataMetaInfo.java
CLDR_METAINFO_FILE := $(GENSRC_DIR)/sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo_jdk_localedata.java CLDR_METAINFO_FILE := $(GENSRC_DIR)/sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo_jdk_localedata.java
CLDR_BASE_LOCALES := "en-US" CLDR_BASE_LOCALES := "en-US"

@ -59,17 +59,6 @@ FindSrcDirsForLib = \
$(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \ $(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \
$(JDK_TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2))) $(JDK_TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2)))
################################################################################
# Find lib dir for module
# Param 1 - module name
ifeq ($(OPENJDK_TARGET_OS_TYPE), unix)
FindLibDirForModule = \
$(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)$(OPENJDK_TARGET_CPU_LIBDIR)
else
FindLibDirForModule = \
$(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)
endif
################################################################################ ################################################################################
# Find a library # Find a library
# Param 1 - module name # Param 1 - module name

@ -81,7 +81,8 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBNIO, \
LDFLAGS_SUFFIX_windows := jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \ LDFLAGS_SUFFIX_windows := jvm.lib ws2_32.lib $(WIN_JAVA_LIB) \
$(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libnet/net.lib \ $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/libnet/net.lib \
advapi32.lib, \ advapi32.lib, \
LDFLAGS_SUFFIX_macosx := -ljava -lnet -pthread -framework CoreFoundation, \ LDFLAGS_SUFFIX_macosx := -ljava -lnet -pthread \
-framework CoreFoundation -framework CoreServices, \
LDFLAGS_SUFFIX :=, \ LDFLAGS_SUFFIX :=, \
VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \ VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
RC_FLAGS := $(RC_FLAGS) \ RC_FLAGS := $(RC_FLAGS) \

@ -228,7 +228,8 @@ public class ModuleArchive implements Archive {
private static String nativeDir(String filename) { private static String nativeDir(String filename) {
if (System.getProperty("os.name").startsWith("Windows")) { if (System.getProperty("os.name").startsWith("Windows")) {
if (filename.endsWith(".dll") || filename.endsWith(".diz") if (filename.endsWith(".dll") || filename.endsWith(".diz")
|| filename.endsWith(".pdb") || filename.endsWith(".map")) { || filename.endsWith(".pdb") || filename.endsWith(".map")
|| filename.endsWith(".cpl")) {
return "bin"; return "bin";
} else { } else {
return "lib"; return "lib";

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2008, 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -49,6 +49,8 @@ public class MacOSXFileSystemProvider extends BsdFileSystemProvider {
FileTypeDetector getFileTypeDetector() { FileTypeDetector getFileTypeDetector() {
Path userMimeTypes = Paths.get(AccessController.doPrivileged( Path userMimeTypes = Paths.get(AccessController.doPrivileged(
new GetPropertyAction("user.home")), ".mime.types"); new GetPropertyAction("user.home")), ".mime.types");
return new MimeTypesFileTypeDetector(userMimeTypes);
return chain(new MimeTypesFileTypeDetector(userMimeTypes),
new UTIFileTypeDetector());
} }
} }

@ -0,0 +1,66 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package sun.nio.fs;
import java.io.IOException;
import java.nio.file.Path;
import java.security.AccessController;
import java.security.PrivilegedAction;
/**
* File type detector that uses a file extension to look up its MIME type
* via the Apple Uniform Type Identifier interfaces.
*/
class UTIFileTypeDetector extends AbstractFileTypeDetector {
UTIFileTypeDetector() {
super();
}
private native String probe0(String fileExtension) throws IOException;
@Override
protected String implProbeContentType(Path path) throws IOException {
Path fn = path.getFileName();
if (fn == null)
return null; // no file name
String ext = getExtension(fn.toString());
if (ext.isEmpty())
return null; // no extension
return probe0(ext);
}
static {
AccessController.doPrivileged(new PrivilegedAction<>() {
@Override
public Void run() {
System.loadLibrary("nio");
return null;
}
});
}
}

@ -0,0 +1,127 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#include "jni.h"
#include "jni_util.h"
#include <CoreFoundation/CoreFoundation.h>
#include <CoreServices/CoreServices.h>
/**
* Creates a CF string from the given Java string.
* If javaString is NULL, NULL is returned.
* If a memory error occurs, and OutOfMemoryError is thrown and
* NULL is returned.
*/
static CFStringRef toCFString(JNIEnv *env, jstring javaString)
{
if (javaString == NULL) {
return NULL;
} else {
CFStringRef result = NULL;
jsize length = (*env)->GetStringLength(env, javaString);
const jchar *chars = (*env)->GetStringChars(env, javaString, NULL);
if (chars == NULL) {
JNU_ThrowOutOfMemoryError(env, "toCFString failed");
return NULL;
}
result = CFStringCreateWithCharacters(NULL, (const UniChar *)chars,
length);
(*env)->ReleaseStringChars(env, javaString, chars);
if (result == NULL) {
JNU_ThrowOutOfMemoryError(env, "toCFString failed");
return NULL;
}
return result;
}
}
/**
* Creates a Java string from the given CF string.
* If cfString is NULL, NULL is returned.
* If a memory error occurs, and OutOfMemoryError is thrown and
* NULL is returned.
*/
static jstring toJavaString(JNIEnv *env, CFStringRef cfString)
{
if (cfString == NULL) {
return NULL;
} else {
jstring javaString = NULL;
CFIndex length = CFStringGetLength(cfString);
const UniChar *constchars = CFStringGetCharactersPtr(cfString);
if (constchars) {
javaString = (*env)->NewString(env, constchars, length);
} else {
UniChar *chars = malloc(length * sizeof(UniChar));
if (chars == NULL) {
JNU_ThrowOutOfMemoryError(env, "toJavaString failed");
return NULL;
}
CFStringGetCharacters(cfString, CFRangeMake(0, length), chars);
javaString = (*env)->NewString(env, chars, length);
free(chars);
}
return javaString;
}
}
/**
* Returns the content type corresponding to the supplied file extension.
* The mapping is determined using Uniform Type Identifiers (UTIs). If
* the file extension parameter is NULL, a CFString cannot be created
* from the file extension parameter, there is no UTI corresponding to
* the file extension, the UTI cannot supply a MIME type for the file
* extension, or a Java string cannot be created, then NULL is returned;
* otherwise the MIME type string is returned.
*/
JNIEXPORT jstring JNICALL
Java_sun_nio_fs_UTIFileTypeDetector_probe0(JNIEnv* env, jobject ftd,
jstring ext)
{
jstring result = NULL;
CFStringRef extension = toCFString(env, ext);
if (extension != NULL) {
CFStringRef uti =
UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension,
extension, NULL);
CFRelease(extension);
if (uti != NULL) {
CFStringRef mimeType =
UTTypeCopyPreferredTagWithClass(uti, kUTTagClassMIMEType);
CFRelease(uti);
if (mimeType != NULL) {
result = toJavaString(env, mimeType);
CFRelease(mimeType);
}
}
}
return result;
}

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015 Red Hat, Inc. * Copyright (c) 2015 Red Hat, Inc.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
@ -62,14 +62,16 @@ final class GHASH {
private static final int AES_BLOCK_SIZE = 16; private static final int AES_BLOCK_SIZE = 16;
// Multiplies state0, state1 by V0, V1. // Multiplies state[0], state[1] by subkeyH[0], subkeyH[1].
private void blockMult(long V0, long V1) { private static void blockMult(long[] st, long[] subH) {
long Z0 = 0; long Z0 = 0;
long Z1 = 0; long Z1 = 0;
long V0 = subH[0];
long V1 = subH[1];
long X; long X;
// Separate loops for processing state0 and state1. // Separate loops for processing state[0] and state[1].
X = state0; X = st[0];
for (int i = 0; i < 64; i++) { for (int i = 0; i < 64; i++) {
// Zi+1 = Zi if bit i of x is 0 // Zi+1 = Zi if bit i of x is 0
long mask = X >> 63; long mask = X >> 63;
@ -89,7 +91,7 @@ final class GHASH {
X <<= 1; X <<= 1;
} }
X = state1; X = st[1];
for (int i = 64; i < 127; i++) { for (int i = 64; i < 127; i++) {
// Zi+1 = Zi if bit i of x is 0 // Zi+1 = Zi if bit i of x is 0
long mask = X >> 63; long mask = X >> 63;
@ -115,15 +117,18 @@ final class GHASH {
Z1 ^= V1 & mask; Z1 ^= V1 & mask;
// Save result. // Save result.
state0 = Z0; st[0] = Z0;
state1 = Z1; st[1] = Z1;
} }
/* subkeyH and state are stored in long[] for GHASH intrinsic use */
// hash subkey H; should not change after the object has been constructed // hash subkey H; should not change after the object has been constructed
private final long subkeyH0, subkeyH1; private final long[] subkeyH;
// buffer for storing hash // buffer for storing hash
private long state0, state1; private final long[] state;
// variables for save/restore calls // variables for save/restore calls
private long stateSave0, stateSave1; private long stateSave0, stateSave1;
@ -141,8 +146,10 @@ final class GHASH {
if ((subkeyH == null) || subkeyH.length != AES_BLOCK_SIZE) { if ((subkeyH == null) || subkeyH.length != AES_BLOCK_SIZE) {
throw new ProviderException("Internal error"); throw new ProviderException("Internal error");
} }
this.subkeyH0 = getLong(subkeyH, 0); state = new long[2];
this.subkeyH1 = getLong(subkeyH, 8); this.subkeyH = new long[2];
this.subkeyH[0] = getLong(subkeyH, 0);
this.subkeyH[1] = getLong(subkeyH, 8);
} }
/** /**
@ -151,33 +158,30 @@ final class GHASH {
* this object for different data w/ the same H. * this object for different data w/ the same H.
*/ */
void reset() { void reset() {
state0 = 0; state[0] = 0;
state1 = 0; state[1] = 0;
} }
/** /**
* Save the current snapshot of this GHASH object. * Save the current snapshot of this GHASH object.
*/ */
void save() { void save() {
stateSave0 = state0; stateSave0 = state[0];
stateSave1 = state1; stateSave1 = state[1];
} }
/** /**
* Restores this object using the saved snapshot. * Restores this object using the saved snapshot.
*/ */
void restore() { void restore() {
state0 = stateSave0; state[0] = stateSave0;
state1 = stateSave1; state[1] = stateSave1;
} }
private void processBlock(byte[] data, int ofs) { private static void processBlock(byte[] data, int ofs, long[] st, long[] subH) {
if (data.length - ofs < AES_BLOCK_SIZE) { st[0] ^= getLong(data, ofs);
throw new RuntimeException("need complete block"); st[1] ^= getLong(data, ofs + 8);
} blockMult(st, subH);
state0 ^= getLong(data, ofs);
state1 ^= getLong(data, ofs + 8);
blockMult(subkeyH0, subkeyH1);
} }
void update(byte[] in) { void update(byte[] in) {
@ -185,22 +189,57 @@ final class GHASH {
} }
void update(byte[] in, int inOfs, int inLen) { void update(byte[] in, int inOfs, int inLen) {
if (inLen - inOfs > in.length) { if (inLen == 0) {
throw new RuntimeException("input length out of bound"); return;
}
ghashRangeCheck(in, inOfs, inLen, state, subkeyH);
processBlocks(in, inOfs, inLen/AES_BLOCK_SIZE, state, subkeyH);
}
private static void ghashRangeCheck(byte[] in, int inOfs, int inLen, long[] st, long[] subH) {
if (inLen < 0) {
throw new RuntimeException("invalid input length: " + inLen);
}
if (inOfs < 0) {
throw new RuntimeException("invalid offset: " + inOfs);
}
if (inLen > in.length - inOfs) {
throw new RuntimeException("input length out of bound: " +
inLen + " > " + (in.length - inOfs));
} }
if (inLen % AES_BLOCK_SIZE != 0) { if (inLen % AES_BLOCK_SIZE != 0) {
throw new RuntimeException("input length unsupported"); throw new RuntimeException("input length/block size mismatch: " +
inLen);
} }
for (int i = inOfs; i < (inOfs + inLen); i += AES_BLOCK_SIZE) { // These two checks are for C2 checking
processBlock(in, i); if (st.length != 2) {
throw new RuntimeException("internal state has invalid length: " +
st.length);
}
if (subH.length != 2) {
throw new RuntimeException("internal subkeyH has invalid length: " +
subH.length);
}
}
/*
* This is an intrinsified method. The method's argument list must match
* the hotspot signature. This method and methods called by it, cannot
* throw exceptions or allocate arrays as it will breaking intrinsics
*/
private static void processBlocks(byte[] data, int inOfs, int blocks, long[] st, long[] subH) {
int offset = inOfs;
while (blocks > 0) {
processBlock(data, offset, st, subH);
blocks--;
offset += AES_BLOCK_SIZE;
} }
} }
byte[] digest() { byte[] digest() {
byte[] result = new byte[AES_BLOCK_SIZE]; byte[] result = new byte[AES_BLOCK_SIZE];
putLong(result, 0, state0); putLong(result, 0, state[0]);
putLong(result, 8, state1); putLong(result, 8, state[1]);
reset(); reset();
return result; return result;
} }

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -121,7 +121,7 @@ public final class OAEPParameters extends AlgorithmParametersSpi {
} else if (data.isContextSpecific((byte) 0x01)) { } else if (data.isContextSpecific((byte) 0x01)) {
// mgf algid // mgf algid
AlgorithmId val = AlgorithmId.parse(data.data.getDerValue()); AlgorithmId val = AlgorithmId.parse(data.data.getDerValue());
if (!val.getOID().equals((Object) OID_MGF1)) { if (!val.getOID().equals(OID_MGF1)) {
throw new IOException("Only MGF1 mgf is supported"); throw new IOException("Only MGF1 mgf is supported");
} }
AlgorithmId params = AlgorithmId.parse( AlgorithmId params = AlgorithmId.parse(
@ -144,7 +144,7 @@ public final class OAEPParameters extends AlgorithmParametersSpi {
} else if (data.isContextSpecific((byte) 0x02)) { } else if (data.isContextSpecific((byte) 0x02)) {
// pSource algid // pSource algid
AlgorithmId val = AlgorithmId.parse(data.data.getDerValue()); AlgorithmId val = AlgorithmId.parse(data.data.getDerValue());
if (!val.getOID().equals((Object) OID_PSpecified)) { if (!val.getOID().equals(OID_PSpecified)) {
throw new IOException("Wrong OID for pSpecified"); throw new IOException("Wrong OID for pSpecified");
} }
DerInputStream dis = new DerInputStream(val.getEncodedParams()); DerInputStream dis = new DerInputStream(val.getEncodedParams());

@ -1235,7 +1235,7 @@ class Attribute implements Comparable<Attribute> {
int sofar = 0; // how far have we processed the layout? int sofar = 0; // how far have we processed the layout?
for (;;) { for (;;) {
// for each dash, collect everything up to the dash // for each dash, collect everything up to the dash
result.append(layout.substring(sofar, dash)); result.append(layout, sofar, dash);
sofar = dash+1; // skip the dash sofar = dash+1; // skip the dash
// then collect intermediate values // then collect intermediate values
int value0 = parseIntBefore(layout, dash); int value0 = parseIntBefore(layout, dash);
@ -1249,7 +1249,7 @@ class Attribute implements Comparable<Attribute> {
dash = findCaseDash(layout, sofar); dash = findCaseDash(layout, sofar);
if (dash < 0) break; if (dash < 0) break;
} }
result.append(layout.substring(sofar)); // collect the rest result.append(layout, sofar, layout.length()); // collect the rest
return result.toString(); return result.toString();
} }
static { static {

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1994, 2003, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -34,8 +34,7 @@ package java.io;
* @author Arthur van Hoff * @author Arthur van Hoff
* @since 1.0 * @since 1.0
*/ */
public public class BufferedOutputStream extends FilterOutputStream {
class BufferedOutputStream extends FilterOutputStream {
/** /**
* The internal buffer where data is stored. * The internal buffer where data is stored.
*/ */
@ -90,6 +89,7 @@ class BufferedOutputStream extends FilterOutputStream {
* @param b the byte to be written. * @param b the byte to be written.
* @exception IOException if an I/O error occurs. * @exception IOException if an I/O error occurs.
*/ */
@Override
public synchronized void write(int b) throws IOException { public synchronized void write(int b) throws IOException {
if (count >= buf.length) { if (count >= buf.length) {
flushBuffer(); flushBuffer();
@ -113,6 +113,7 @@ class BufferedOutputStream extends FilterOutputStream {
* @param len the number of bytes to write. * @param len the number of bytes to write.
* @exception IOException if an I/O error occurs. * @exception IOException if an I/O error occurs.
*/ */
@Override
public synchronized void write(byte b[], int off, int len) throws IOException { public synchronized void write(byte b[], int off, int len) throws IOException {
if (len >= buf.length) { if (len >= buf.length) {
/* If the request length exceeds the size of the output buffer, /* If the request length exceeds the size of the output buffer,
@ -136,6 +137,7 @@ class BufferedOutputStream extends FilterOutputStream {
* @exception IOException if an I/O error occurs. * @exception IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out * @see java.io.FilterOutputStream#out
*/ */
@Override
public synchronized void flush() throws IOException { public synchronized void flush() throws IOException {
flushBuffer(); flushBuffer();
out.flush(); out.flush();

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -41,13 +41,15 @@ package java.io;
* @author Jonathan Payne * @author Jonathan Payne
* @since 1.0 * @since 1.0
*/ */
public public class FilterOutputStream extends OutputStream {
class FilterOutputStream extends OutputStream {
/** /**
* The underlying output stream to be filtered. * The underlying output stream to be filtered.
*/ */
protected OutputStream out; protected OutputStream out;
/**
* Whether the stream is closed; implicitly initialized to false.
*/
private boolean closed; private boolean closed;
/** /**
@ -75,6 +77,7 @@ class FilterOutputStream extends OutputStream {
* @param b the <code>byte</code>. * @param b the <code>byte</code>.
* @exception IOException if an I/O error occurs. * @exception IOException if an I/O error occurs.
*/ */
@Override
public void write(int b) throws IOException { public void write(int b) throws IOException {
out.write(b); out.write(b);
} }
@ -95,6 +98,7 @@ class FilterOutputStream extends OutputStream {
* @exception IOException if an I/O error occurs. * @exception IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#write(byte[], int, int) * @see java.io.FilterOutputStream#write(byte[], int, int)
*/ */
@Override
public void write(byte b[]) throws IOException { public void write(byte b[]) throws IOException {
write(b, 0, b.length); write(b, 0, b.length);
} }
@ -119,6 +123,7 @@ class FilterOutputStream extends OutputStream {
* @exception IOException if an I/O error occurs. * @exception IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#write(int) * @see java.io.FilterOutputStream#write(int)
*/ */
@Override
public void write(byte b[], int off, int len) throws IOException { public void write(byte b[], int off, int len) throws IOException {
if ((off | len | (b.length - (len + off)) | (off + len)) < 0) if ((off | len | (b.length - (len + off)) | (off + len)) < 0)
throw new IndexOutOfBoundsException(); throw new IndexOutOfBoundsException();
@ -138,6 +143,7 @@ class FilterOutputStream extends OutputStream {
* @exception IOException if an I/O error occurs. * @exception IOException if an I/O error occurs.
* @see java.io.FilterOutputStream#out * @see java.io.FilterOutputStream#out
*/ */
@Override
public void flush() throws IOException { public void flush() throws IOException {
out.flush(); out.flush();
} }
@ -154,13 +160,40 @@ class FilterOutputStream extends OutputStream {
* @see java.io.FilterOutputStream#flush() * @see java.io.FilterOutputStream#flush()
* @see java.io.FilterOutputStream#out * @see java.io.FilterOutputStream#out
*/ */
@SuppressWarnings("try") @Override
public void close() throws IOException { public void close() throws IOException {
if (closed) if (closed) {
return; return;
}
closed = true; closed = true;
try (OutputStream ostream = out) {
Throwable flushException = null;
try {
flush(); flush();
} catch (Throwable e) {
flushException = e;
throw e;
} finally {
if (flushException == null) {
out.close();
} else {
try {
out.close();
} catch (Throwable closeException) {
// evaluate possible precedence of flushException over closeException
if ((flushException instanceof ThreadDeath) &&
!(closeException instanceof ThreadDeath)) {
flushException.addSuppressed(closeException);
throw (ThreadDeath) flushException;
}
if (flushException != closeException) {
closeException.addSuppressed(flushException);
}
throw closeException;
}
}
} }
} }
} }

@ -109,7 +109,7 @@ public class StringWriter extends Writer {
* @param len Number of characters to write * @param len Number of characters to write
*/ */
public void write(String str, int off, int len) { public void write(String str, int off, int len) {
buf.append(str.substring(off, off + len)); buf.append(str, off, off + len);
} }
/** /**

@ -515,8 +515,12 @@ abstract class AbstractStringBuilder implements Appendable, CharSequence {
+ s.length()); + s.length());
int len = end - start; int len = end - start;
ensureCapacityInternal(count + len); ensureCapacityInternal(count + len);
for (int i = start, j = count; i < end; i++, j++) if (s instanceof String) {
value[j] = s.charAt(i); ((String)s).getChars(start, end, value, count);
} else {
for (int i = start, j = count; i < end; i++, j++)
value[j] = s.charAt(i);
}
count += len; count += len;
return this; return this;
} }

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -25,10 +25,14 @@
package java.net; package java.net;
import java.util.Arrays;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import sun.security.action.*;
import java.security.AccessController; import java.security.AccessController;
import java.util.Spliterator;
import java.util.Spliterators;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
/** /**
* This class represents a Network Interface made up of a name, * This class represents a Network Interface made up of a name,
@ -95,8 +99,8 @@ public final class NetworkInterface {
} }
/** /**
* Convenience method to return an Enumeration with all or a * Get an Enumeration with all or a subset of the InetAddresses bound to
* subset of the InetAddresses bound to this network interface. * this network interface.
* <p> * <p>
* If there is a security manager, its {@code checkConnect} * If there is a security manager, its {@code checkConnect}
* method is called for each InetAddress. Only InetAddresses where * method is called for each InetAddress. Only InetAddresses where
@ -104,53 +108,56 @@ public final class NetworkInterface {
* will be returned in the Enumeration. However, if the caller has the * will be returned in the Enumeration. However, if the caller has the
* {@link NetPermission}("getNetworkInformation") permission, then all * {@link NetPermission}("getNetworkInformation") permission, then all
* InetAddresses are returned. * InetAddresses are returned.
*
* @return an Enumeration object with all or a subset of the InetAddresses * @return an Enumeration object with all or a subset of the InetAddresses
* bound to this network interface * bound to this network interface
* @see #inetAddresses()
*/ */
public Enumeration<InetAddress> getInetAddresses() { public Enumeration<InetAddress> getInetAddresses() {
return enumerationFromArray(getCheckedInetAddresses());
}
class checkedAddresses implements Enumeration<InetAddress> { /**
* Get a Stream of all or a subset of the InetAddresses bound to this
* network interface.
* <p>
* If there is a security manager, its {@code checkConnect}
* method is called for each InetAddress. Only InetAddresses where
* the {@code checkConnect} doesn't throw a SecurityException will be
* returned in the Stream. However, if the caller has the
* {@link NetPermission}("getNetworkInformation") permission, then all
* InetAddresses are returned.
*
* @return a Stream object with all or a subset of the InetAddresses
* bound to this network interface
* @since 1.9
*/
public Stream<InetAddress> inetAddresses() {
return streamFromArray(getCheckedInetAddresses());
}
private int i=0, count=0; private InetAddress[] getCheckedInetAddresses() {
private InetAddress local_addrs[]; InetAddress[] local_addrs = new InetAddress[addrs.length];
boolean trusted = true;
checkedAddresses() { SecurityManager sec = System.getSecurityManager();
local_addrs = new InetAddress[addrs.length]; if (sec != null) {
boolean trusted = true; try {
sec.checkPermission(new NetPermission("getNetworkInformation"));
SecurityManager sec = System.getSecurityManager(); } catch (SecurityException e) {
if (sec != null) { trusted = false;
try {
sec.checkPermission(new NetPermission("getNetworkInformation"));
} catch (SecurityException e) {
trusted = false;
}
}
for (int j=0; j<addrs.length; j++) {
try {
if (sec != null && !trusted) {
sec.checkConnect(addrs[j].getHostAddress(), -1);
}
local_addrs[count++] = addrs[j];
} catch (SecurityException e) { }
}
}
public InetAddress nextElement() {
if (i < count) {
return local_addrs[i++];
} else {
throw new NoSuchElementException();
}
}
public boolean hasMoreElements() {
return (i < count);
} }
} }
return new checkedAddresses(); int i = 0;
for (int j = 0; j < addrs.length; j++) {
try {
if (!trusted) {
sec.checkConnect(addrs[j].getHostAddress(), -1);
}
local_addrs[i++] = addrs[j];
} catch (SecurityException e) { }
}
return Arrays.copyOf(local_addrs, i);
} }
/** /**
@ -188,30 +195,23 @@ public final class NetworkInterface {
* *
* @return an Enumeration object with all of the subinterfaces * @return an Enumeration object with all of the subinterfaces
* of this network interface * of this network interface
* @see #subInterfaces()
* @since 1.6 * @since 1.6
*/ */
public Enumeration<NetworkInterface> getSubInterfaces() { public Enumeration<NetworkInterface> getSubInterfaces() {
class subIFs implements Enumeration<NetworkInterface> { return enumerationFromArray(childs);
}
private int i=0;
subIFs() {
}
public NetworkInterface nextElement() {
if (i < childs.length) {
return childs[i++];
} else {
throw new NoSuchElementException();
}
}
public boolean hasMoreElements() {
return (i < childs.length);
}
}
return new subIFs();
/**
* Get a Stream of all subinterfaces (also known as virtual
* interfaces) attached to this network interface.
*
* @return a Stream object with all of the subinterfaces
* of this network interface
* @since 1.9
*/
public Stream<NetworkInterface> subInterfaces() {
return streamFromArray(childs);
} }
/** /**
@ -326,43 +326,80 @@ public final class NetworkInterface {
} }
/** /**
* Returns all the interfaces on this machine. The {@code Enumeration} * Returns an {@code Enumeration} of all the interfaces on this machine. The
* contains at least one element, possibly representing a loopback * {@code Enumeration} contains at least one element, possibly representing
* interface that only supports communication between entities on * a loopback interface that only supports communication between entities on
* this machine. * this machine.
* *
* NOTE: can use getNetworkInterfaces()+getInetAddresses() * @apiNote this method can be used in combination with
* to obtain all IP addresses for this node * {@link #getInetAddresses()} to obtain all IP addresses for this node
* *
* @return an Enumeration of NetworkInterfaces found on this machine * @return an Enumeration of NetworkInterfaces found on this machine
* @exception SocketException if an I/O error occurs. * @exception SocketException if an I/O error occurs.
* @see #networkInterfaces()
*/ */
public static Enumeration<NetworkInterface> getNetworkInterfaces() public static Enumeration<NetworkInterface> getNetworkInterfaces()
throws SocketException { throws SocketException {
final NetworkInterface[] netifs = getAll(); NetworkInterface[] netifs = getAll();
assert netifs != null && netifs.length > 0;
// specified to return null if no network interfaces return enumerationFromArray(netifs);
if (netifs == null) }
return null;
/**
* Returns a {@code Stream} of all the interfaces on this machine. The
* {@code Stream} contains at least one interface, possibly representing a
* loopback interface that only supports communication between entities on
* this machine.
*
* @apiNote this method can be used in combination with
* {@link #inetAddresses()}} to obtain a stream of all IP addresses for
* this node, for example:
* <pre> {@code
* Stream<InetAddress> addrs = NetworkInterface.networkInterfaces()
* .flatMap(NetworkInterface::inetAddresses);
* }</pre>
*
* @return a Stream of NetworkInterfaces found on this machine
* @exception SocketException if an I/O error occurs.
* @since 1.9
*/
public static Stream<NetworkInterface> networkInterfaces()
throws SocketException {
NetworkInterface[] netifs = getAll();
assert netifs != null && netifs.length > 0;
return streamFromArray(netifs);
}
private static <T> Enumeration<T> enumerationFromArray(T[] a) {
return new Enumeration<>() { return new Enumeration<>() {
private int i = 0; int i = 0;
public NetworkInterface nextElement() {
if (netifs != null && i < netifs.length) { @Override
NetworkInterface netif = netifs[i++]; public T nextElement() {
return netif; if (i < a.length) {
return a[i++];
} else { } else {
throw new NoSuchElementException(); throw new NoSuchElementException();
} }
} }
@Override
public boolean hasMoreElements() { public boolean hasMoreElements() {
return (netifs != null && i < netifs.length); return i < a.length;
} }
}; };
} }
private static <T> Stream<T> streamFromArray(T[] a) {
return StreamSupport.stream(
Spliterators.spliterator(
a,
Spliterator.DISTINCT | Spliterator.IMMUTABLE | Spliterator.NONNULL),
false);
}
private native static NetworkInterface[] getAll() private native static NetworkInterface[] getAll()
throws SocketException; throws SocketException;

@ -2018,7 +2018,7 @@ public final class URI
StringBuilder sb = new StringBuilder(base.length() + cn); StringBuilder sb = new StringBuilder(base.length() + cn);
// 5.2 (6a) // 5.2 (6a)
if (i >= 0) if (i >= 0)
sb.append(base.substring(0, i + 1)); sb.append(base, 0, i + 1);
// 5.2 (6b) // 5.2 (6b)
sb.append(child); sb.append(child);
path = sb.toString(); path = sb.toString();
@ -2686,7 +2686,7 @@ public final class URI
if (!match(c, lowMask, highMask)) { if (!match(c, lowMask, highMask)) {
if (sb == null) { if (sb == null) {
sb = new StringBuffer(); sb = new StringBuffer();
sb.append(s.substring(0, i)); sb.append(s, 0, i);
} }
appendEscape(sb, (byte)c); appendEscape(sb, (byte)c);
} else { } else {
@ -2698,7 +2698,7 @@ public final class URI
|| Character.isISOControl(c))) { || Character.isISOControl(c))) {
if (sb == null) { if (sb == null) {
sb = new StringBuffer(); sb = new StringBuffer();
sb.append(s.substring(0, i)); sb.append(s, 0, i);
} }
appendEncoded(sb, c); appendEncoded(sb, c);
} else { } else {

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -26,6 +26,8 @@
package java.security; package java.security;
import java.util.*; import java.util.*;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
/** /**
* Abstract class representing a collection of Permission objects. * Abstract class representing a collection of Permission objects.
@ -126,9 +128,34 @@ public abstract class PermissionCollection implements java.io.Serializable {
* Returns an enumeration of all the Permission objects in the collection. * Returns an enumeration of all the Permission objects in the collection.
* *
* @return an enumeration of all the Permissions. * @return an enumeration of all the Permissions.
* @see #elementsAsStream()
*/ */
public abstract Enumeration<Permission> elements(); public abstract Enumeration<Permission> elements();
/**
* Returns a stream of all the Permission objects in the collection.
*
* <p> The collection should not be modified (see {@link #add}) during the
* execution of the terminal stream operation. Otherwise, the result of the
* terminal stream operation is undefined.
*
* @implSpec
* The default implementation creates a stream whose source is derived from
* the enumeration returned from a call to {@link #elements()}.
*
* @return a stream of all the Permissions.
* @since 1.9
*/
public Stream<Permission> elementsAsStream() {
int characteristics = isReadOnly()
? Spliterator.NONNULL | Spliterator.IMMUTABLE
: Spliterator.NONNULL;
return StreamSupport.stream(
Spliterators.spliteratorUnknownSize(
elements().asIterator(), characteristics),
false);
}
/** /**
* Marks this PermissionCollection object as "readonly". After * Marks this PermissionCollection object as "readonly". After
* a PermissionCollection object * a PermissionCollection object

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -2238,7 +2238,7 @@ public class X509CertSelector implements CertSelector {
+ subjectPublicKeyAlgID + ", xcert subjectPublicKeyAlgID = " + subjectPublicKeyAlgID + ", xcert subjectPublicKeyAlgID = "
+ algID.getOID()); + algID.getOID());
} }
if (!subjectPublicKeyAlgID.equals((Object)algID.getOID())) { if (!subjectPublicKeyAlgID.equals(algID.getOID())) {
if (debug != null) { if (debug != null) {
debug.println("X509CertSelector.match: " debug.println("X509CertSelector.match: "
+ "subject public key alg IDs don't match"); + "subject public key alg IDs don't match");

@ -329,8 +329,8 @@ final class MergeCollation {
PatternEntry e = patterns.get(i); PatternEntry e = patterns.get(i);
if (e.chars.regionMatches(0,entry.chars,0, if (e.chars.regionMatches(0,entry.chars,0,
e.chars.length())) { e.chars.length())) {
excessChars.append(entry.chars.substring(e.chars.length(), excessChars.append(entry.chars, e.chars.length(),
entry.chars.length())); entry.chars.length());
break; break;
} }
} }

@ -1239,7 +1239,7 @@ public class MessageFormat extends Format {
int lastOffset = 0; int lastOffset = 0;
int last = result.length(); int last = result.length();
for (int i = 0; i <= maxOffset; ++i) { for (int i = 0; i <= maxOffset; ++i) {
result.append(pattern.substring(lastOffset, offsets[i])); result.append(pattern, lastOffset, offsets[i]);
lastOffset = offsets[i]; lastOffset = offsets[i];
int argumentNumber = argumentNumbers[i]; int argumentNumber = argumentNumbers[i];
if (arguments == null || argumentNumber >= arguments.length) { if (arguments == null || argumentNumber >= arguments.length) {
@ -1332,7 +1332,7 @@ public class MessageFormat extends Format {
} }
} }
} }
result.append(pattern.substring(lastOffset, pattern.length())); result.append(pattern, lastOffset, pattern.length());
if (characterIterators != null && last != result.length()) { if (characterIterators != null && last != result.length()) {
characterIterators.add(createAttributedCharacterIterator( characterIterators.add(createAttributedCharacterIterator(
result.substring(last))); result.substring(last)));

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -4268,6 +4268,7 @@ public class Collections {
public boolean hasMoreElements() { return false; } public boolean hasMoreElements() { return false; }
public E nextElement() { throw new NoSuchElementException(); } public E nextElement() { throw new NoSuchElementException(); }
public Iterator<E> asIterator() { return emptyIterator(); }
} }
/** /**
@ -5199,6 +5200,11 @@ public class Collections {
* interoperability with legacy APIs that require an enumeration * interoperability with legacy APIs that require an enumeration
* as input. * as input.
* *
* <p>The iterator returned from a call to {@link Enumeration#asIterator()}
* does not support removal of elements from the specified collection. This
* is necessary to avoid unintentionally increasing the capabilities of the
* returned enumeration.
*
* @param <T> the class of the objects in the collection * @param <T> the class of the objects in the collection
* @param c the collection for which an enumeration is to be returned. * @param c the collection for which an enumeration is to be returned.
* @return an enumeration over the specified collection. * @return an enumeration over the specified collection.

@ -88,18 +88,22 @@ public class LinkedList<E>
/** /**
* Pointer to first node. * Pointer to first node.
* Invariant: (first == null && last == null) ||
* (first.prev == null && first.item != null)
*/ */
transient Node<E> first; transient Node<E> first;
/** /**
* Pointer to last node. * Pointer to last node.
* Invariant: (first == null && last == null) ||
* (last.next == null && last.item != null)
*/ */
transient Node<E> last; transient Node<E> last;
/*
void dataStructureInvariants() {
assert (size == 0)
? (first == null && last == null)
: (first.prev == null && last.next == null);
}
*/
/** /**
* Constructs an empty list. * Constructs an empty list.
*/ */

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -265,6 +265,10 @@ class JarFile extends ZipFile {
public JarEntry nextElement() { public JarEntry nextElement() {
return next(); return next();
} }
public Iterator<JarEntry> asIterator() {
return this;
}
} }
/** /**

@ -526,6 +526,10 @@ class ZipFile implements ZipConstants, Closeable {
return ze; return ze;
} }
} }
public Iterator<ZipEntry> asIterator() {
return this;
}
} }
/** /**

@ -511,7 +511,7 @@ public class BytecodeName {
if (s.charAt(0) != ESCAPE_C && i > 0) if (s.charAt(0) != ESCAPE_C && i > 0)
sb.append(NULL_ESCAPE); sb.append(NULL_ESCAPE);
// append the string so far, which is unremarkable: // append the string so far, which is unremarkable:
sb.append(s.substring(0, i)); sb.append(s, 0, i);
} }
// rewrite \ to \-, / to \|, etc. // rewrite \ to \-, / to \|, etc.
@ -544,7 +544,7 @@ public class BytecodeName {
if (sb == null) { if (sb == null) {
sb = new StringBuilder(s.length()); sb = new StringBuilder(s.length());
// append the string so far, which is unremarkable: // append the string so far, which is unremarkable:
sb.append(s.substring(stringStart, i)); sb.append(s, stringStart, i);
} }
++i; // skip both characters ++i; // skip both characters
c = oc; c = oc;

@ -451,7 +451,7 @@ public class ParseUtil {
if (!match(c, lowMask, highMask) && !isEscaped(s, i)) { if (!match(c, lowMask, highMask) && !isEscaped(s, i)) {
if (sb == null) { if (sb == null) {
sb = new StringBuffer(); sb = new StringBuffer();
sb.append(s.substring(0, i)); sb.append(s, 0, i);
} }
appendEscape(sb, (byte)c); appendEscape(sb, (byte)c);
} else { } else {
@ -463,7 +463,7 @@ public class ParseUtil {
|| Character.isISOControl(c))) { || Character.isISOControl(c))) {
if (sb == null) { if (sb == null) {
sb = new StringBuffer(); sb = new StringBuffer();
sb.append(s.substring(0, i)); sb.append(s, 0, i);
} }
appendEncoded(sb, c); appendEncoded(sb, c);
} else { } else {

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -41,6 +41,27 @@ public abstract class AbstractFileTypeDetector
super(); super();
} }
/**
* Returns the extension of a file name, specifically the portion of the
* parameter string after the first dot. If the parameter is {@code null},
* empty, does not contain a dot, or the dot is the last character, then an
* empty string is returned, otherwise the characters after the dot are
* returned.
*
* @param name A file name
* @return The characters after the first dot or an empty string.
*/
protected final String getExtension(String name) {
String ext = "";
if (name != null && !name.isEmpty()) {
int dot = name.indexOf('.');
if ((dot >= 0) && (dot < name.length() - 1)) {
ext = name.substring(dot + 1);
}
}
return ext;
}
/** /**
* Invokes the appropriate probe method to guess a file's content type, * Invokes the appropriate probe method to guess a file's content type,
* and checks that the content type's syntax is valid. * and checks that the content type's syntax is valid.

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -163,9 +163,9 @@ public class ContentInfo {
} }
public byte[] getData() throws IOException { public byte[] getData() throws IOException {
if (contentType.equals((Object)DATA_OID) || if (contentType.equals(DATA_OID) ||
contentType.equals((Object)OLD_DATA_OID) || contentType.equals(OLD_DATA_OID) ||
contentType.equals((Object)TIMESTAMP_TOKEN_INFO_OID)) { contentType.equals(TIMESTAMP_TOKEN_INFO_OID)) {
if (content == null) if (content == null)
return null; return null;
else else

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -182,13 +182,12 @@ public class PKCS7 {
contentType = contentInfo.contentType; contentType = contentInfo.contentType;
DerValue content = contentInfo.getContent(); DerValue content = contentInfo.getContent();
if (contentType.equals((Object)ContentInfo.SIGNED_DATA_OID)) { if (contentType.equals(ContentInfo.SIGNED_DATA_OID)) {
parseSignedData(content); parseSignedData(content);
} else if (contentType.equals((Object)ContentInfo.OLD_SIGNED_DATA_OID)) { } else if (contentType.equals(ContentInfo.OLD_SIGNED_DATA_OID)) {
// This is for backwards compatibility with JDK 1.1.x // This is for backwards compatibility with JDK 1.1.x
parseOldSignedData(content); parseOldSignedData(content);
} else if (contentType.equals((Object) } else if (contentType.equals(ContentInfo.NETSCAPE_CERT_SEQUENCE_OID)){
ContentInfo.NETSCAPE_CERT_SEQUENCE_OID)){
parseNetscapeCertChain(content); parseNetscapeCertChain(content);
} else { } else {
throw new ParsingException("content type " + contentType + throw new ParsingException("content type " + contentType +

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -307,7 +307,7 @@ public class SignerInfo implements DerEncoder {
authenticatedAttributes.getAttributeValue( authenticatedAttributes.getAttributeValue(
PKCS9Attribute.CONTENT_TYPE_OID); PKCS9Attribute.CONTENT_TYPE_OID);
if (contentType == null || if (contentType == null ||
!contentType.equals((Object)content.contentType)) !contentType.equals(content.contentType))
return null; // contentType does not match, bad SignerInfo return null; // contentType does not match, bad SignerInfo
// now, check message digest // now, check message digest

@ -789,7 +789,7 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
} }
} }
if (params != null) { if (params != null) {
if (algorithm.equals((Object)pbes2_OID)) { if (algorithm.equals(pbes2_OID)) {
algParams = AlgorithmParameters.getInstance("PBES2"); algParams = AlgorithmParameters.getInstance("PBES2");
} else { } else {
algParams = AlgorithmParameters.getInstance("PBE"); algParams = AlgorithmParameters.getInstance("PBE");
@ -926,7 +926,7 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
private static String mapPBEParamsToAlgorithm(ObjectIdentifier algorithm, private static String mapPBEParamsToAlgorithm(ObjectIdentifier algorithm,
AlgorithmParameters algParams) throws NoSuchAlgorithmException { AlgorithmParameters algParams) throws NoSuchAlgorithmException {
// Check for PBES2 algorithms // Check for PBES2 algorithms
if (algorithm.equals((Object)pbes2_OID) && algParams != null) { if (algorithm.equals(pbes2_OID) && algParams != null) {
return algParams.toString(); return algParams.toString();
} }
return algorithm.toString(); return algorithm.toString();
@ -1937,7 +1937,7 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
ContentInfo authSafe = new ContentInfo(s); ContentInfo authSafe = new ContentInfo(s);
ObjectIdentifier contentType = authSafe.getContentType(); ObjectIdentifier contentType = authSafe.getContentType();
if (contentType.equals((Object)ContentInfo.DATA_OID)) { if (contentType.equals(ContentInfo.DATA_OID)) {
authSafeData = authSafe.getData(); authSafeData = authSafe.getData();
} else /* signed data */ { } else /* signed data */ {
throw new IOException("public key protected PKCS12 not supported"); throw new IOException("public key protected PKCS12 not supported");
@ -1965,14 +1965,14 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
safeContents = new ContentInfo(sci); safeContents = new ContentInfo(sci);
contentType = safeContents.getContentType(); contentType = safeContents.getContentType();
safeContentsData = null; safeContentsData = null;
if (contentType.equals((Object)ContentInfo.DATA_OID)) { if (contentType.equals(ContentInfo.DATA_OID)) {
if (debug != null) { if (debug != null) {
debug.println("Loading PKCS#7 data content-type"); debug.println("Loading PKCS#7 data content-type");
} }
safeContentsData = safeContents.getData(); safeContentsData = safeContents.getData();
} else if (contentType.equals((Object)ContentInfo.ENCRYPTED_DATA_OID)) { } else if (contentType.equals(ContentInfo.ENCRYPTED_DATA_OID)) {
if (password == null) { if (password == null) {
if (debug != null) { if (debug != null) {
@ -2178,12 +2178,12 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
+ bagValue.tag); + bagValue.tag);
} }
bagValue = bagValue.data.getDerValue(); bagValue = bagValue.data.getDerValue();
if (bagId.equals((Object)PKCS8ShroudedKeyBag_OID)) { if (bagId.equals(PKCS8ShroudedKeyBag_OID)) {
PrivateKeyEntry kEntry = new PrivateKeyEntry(); PrivateKeyEntry kEntry = new PrivateKeyEntry();
kEntry.protectedPrivKey = bagValue.toByteArray(); kEntry.protectedPrivKey = bagValue.toByteArray();
bagItem = kEntry; bagItem = kEntry;
privateKeyCount++; privateKeyCount++;
} else if (bagId.equals((Object)CertBag_OID)) { } else if (bagId.equals(CertBag_OID)) {
DerInputStream cs = new DerInputStream(bagValue.toByteArray()); DerInputStream cs = new DerInputStream(bagValue.toByteArray());
DerValue[] certValues = cs.getSequence(2); DerValue[] certValues = cs.getSequence(2);
ObjectIdentifier certId = certValues[0].getOID(); ObjectIdentifier certId = certValues[0].getOID();
@ -2198,7 +2198,7 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
(new ByteArrayInputStream(certValue.getOctetString())); (new ByteArrayInputStream(certValue.getOctetString()));
bagItem = cert; bagItem = cert;
certificateCount++; certificateCount++;
} else if (bagId.equals((Object)SecretBag_OID)) { } else if (bagId.equals(SecretBag_OID)) {
DerInputStream ss = new DerInputStream(bagValue.toByteArray()); DerInputStream ss = new DerInputStream(bagValue.toByteArray());
DerValue[] secretValues = ss.getSequence(2); DerValue[] secretValues = ss.getSequence(2);
ObjectIdentifier secretId = secretValues[0].getOID(); ObjectIdentifier secretId = secretValues[0].getOID();
@ -2249,12 +2249,12 @@ public final class PKCS12KeyStore extends KeyStoreSpi {
throw new IOException("Attribute " + attrId + throw new IOException("Attribute " + attrId +
" should have a value " + e.getMessage()); " should have a value " + e.getMessage());
} }
if (attrId.equals((Object)PKCS9FriendlyName_OID)) { if (attrId.equals(PKCS9FriendlyName_OID)) {
alias = valSet[0].getBMPString(); alias = valSet[0].getBMPString();
} else if (attrId.equals((Object)PKCS9LocalKeyId_OID)) { } else if (attrId.equals(PKCS9LocalKeyId_OID)) {
keyId = valSet[0].getOctetString(); keyId = valSet[0].getOctetString();
} else if } else if
(attrId.equals((Object)TrustedKeyUsage_OID)) { (attrId.equals(TrustedKeyUsage_OID)) {
trustedKeyUsage = new ObjectIdentifier[valSet.length]; trustedKeyUsage = new ObjectIdentifier[valSet.length];
for (int k = 0; k < valSet.length; k++) { for (int k = 0; k < valSet.length; k++) {
trustedKeyUsage[k] = valSet[k].getOID(); trustedKeyUsage[k] = valSet[k].getOID();

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -322,7 +322,7 @@ public final class OCSP {
List<AccessDescription> descriptions = aia.getAccessDescriptions(); List<AccessDescription> descriptions = aia.getAccessDescriptions();
for (AccessDescription description : descriptions) { for (AccessDescription description : descriptions) {
if (description.getAccessMethod().equals((Object) if (description.getAccessMethod().equals(
AccessDescription.Ad_OCSP_Id)) { AccessDescription.Ad_OCSP_Id)) {
GeneralName generalName = description.getAccessLocation(); GeneralName generalName = description.getAccessLocation();

@ -239,7 +239,7 @@ public final class OCSPResponse {
// responseType // responseType
derIn = tmp.data; derIn = tmp.data;
ObjectIdentifier responseType = derIn.getOID(); ObjectIdentifier responseType = derIn.getOID();
if (responseType.equals((Object)OCSP_BASIC_RESPONSE_OID)) { if (responseType.equals(OCSP_BASIC_RESPONSE_OID)) {
if (debug != null) { if (debug != null) {
debug.println("OCSP response type: basic"); debug.println("OCSP response type: basic");
} }
@ -338,8 +338,7 @@ public final class OCSPResponse {
debug.println("OCSP extension: " + ext); debug.println("OCSP extension: " + ext);
} }
// Only the NONCE extension is recognized // Only the NONCE extension is recognized
if (ext.getExtensionId().equals((Object) if (ext.getExtensionId().equals(OCSP.NONCE_EXTENSION_OID))
OCSP.NONCE_EXTENSION_OID))
{ {
nonce = ext.getExtensionValue(); nonce = ext.getExtensionValue();
} else if (ext.isCritical()) { } else if (ext.isCritical()) {

@ -202,7 +202,7 @@ class URICertStore extends CertStoreSpi {
* object of a certificate's Authority Information Access Extension. * object of a certificate's Authority Information Access Extension.
*/ */
static CertStore getInstance(AccessDescription ad) { static CertStore getInstance(AccessDescription ad) {
if (!ad.getAccessMethod().equals((Object) if (!ad.getAccessMethod().equals(
AccessDescription.Ad_CAISSUERS_Id)) { AccessDescription.Ad_CAISSUERS_Id)) {
return null; return null;
} }

@ -232,7 +232,7 @@ public abstract class RSASignature extends SignatureSpi {
throw new IOException("SEQUENCE length error"); throw new IOException("SEQUENCE length error");
} }
AlgorithmId algId = AlgorithmId.parse(values[0]); AlgorithmId algId = AlgorithmId.parse(values[0]);
if (algId.getOID().equals((Object)oid) == false) { if (algId.getOID().equals(oid) == false) {
throw new IOException("ObjectIdentifier mismatch: " throw new IOException("ObjectIdentifier mismatch: "
+ algId.getOID()); + algId.getOID());
} }

@ -1280,7 +1280,7 @@ public final class Main {
Iterator<PKCS10Attribute> attrs = req.getAttributes().getAttributes().iterator(); Iterator<PKCS10Attribute> attrs = req.getAttributes().getAttributes().iterator();
while (attrs.hasNext()) { while (attrs.hasNext()) {
PKCS10Attribute attr = attrs.next(); PKCS10Attribute attr = attrs.next();
if (attr.getAttributeId().equals((Object)PKCS9Attribute.EXTENSION_REQUEST_OID)) { if (attr.getAttributeId().equals(PKCS9Attribute.EXTENSION_REQUEST_OID)) {
reqex = (CertificateExtensions)attr.getAttributeValue(); reqex = (CertificateExtensions)attr.getAttributeValue();
} }
} }
@ -2338,7 +2338,7 @@ public final class Main {
req.getSubjectName(), pkey.getFormat(), pkey.getAlgorithm()); req.getSubjectName(), pkey.getFormat(), pkey.getAlgorithm());
for (PKCS10Attribute attr: req.getAttributes().getAttributes()) { for (PKCS10Attribute attr: req.getAttributes().getAttributes()) {
ObjectIdentifier oid = attr.getAttributeId(); ObjectIdentifier oid = attr.getAttributeId();
if (oid.equals((Object)PKCS9Attribute.EXTENSION_REQUEST_OID)) { if (oid.equals(PKCS9Attribute.EXTENSION_REQUEST_OID)) {
CertificateExtensions exts = (CertificateExtensions)attr.getAttributeValue(); CertificateExtensions exts = (CertificateExtensions)attr.getAttributeValue();
if (exts != null) { if (exts != null) {
printExtensions(rb.getString("Extension.Request."), exts, out); printExtensions(rb.getString("Extension.Request."), exts, out);

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2006, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -318,14 +318,6 @@ class ObjectIdentifier implements Serializable
out.write (DerValue.tag_ObjectId, encoding); out.write (DerValue.tag_ObjectId, encoding);
} }
/**
* @deprecated Use equals((Object)oid)
*/
@Deprecated
public boolean equals(ObjectIdentifier other) {
return equals((Object)other);
}
/** /**
* Compares this identifier with another, for equality. * Compares this identifier with another, for equality.
* *

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -364,8 +364,8 @@ public class AVA implements DerEncoder {
// encode as PrintableString unless value contains // encode as PrintableString unless value contains
// non-PrintableString chars // non-PrintableString chars
if (this.oid.equals((Object)PKCS9Attribute.EMAIL_ADDRESS_OID) || if (this.oid.equals(PKCS9Attribute.EMAIL_ADDRESS_OID) ||
(this.oid.equals((Object)X500Name.DOMAIN_COMPONENT_OID) && (this.oid.equals(X500Name.DOMAIN_COMPONENT_OID) &&
PRESERVE_OLD_DC_ENCODING == false)) { PRESERVE_OLD_DC_ENCODING == false)) {
// EmailAddress and DomainComponent must be IA5String // EmailAddress and DomainComponent must be IA5String
return new DerValue(DerValue.tag_IA5String, return new DerValue(DerValue.tag_IA5String,
@ -495,8 +495,8 @@ public class AVA implements DerEncoder {
// encode as PrintableString unless value contains // encode as PrintableString unless value contains
// non-PrintableString chars // non-PrintableString chars
if (this.oid.equals((Object)PKCS9Attribute.EMAIL_ADDRESS_OID) || if (this.oid.equals(PKCS9Attribute.EMAIL_ADDRESS_OID) ||
(this.oid.equals((Object)X500Name.DOMAIN_COMPONENT_OID) && (this.oid.equals(X500Name.DOMAIN_COMPONENT_OID) &&
PRESERVE_OLD_DC_ENCODING == false)) { PRESERVE_OLD_DC_ENCODING == false)) {
// EmailAddress and DomainComponent must be IA5String // EmailAddress and DomainComponent must be IA5String
return new DerValue(DerValue.tag_IA5String, temp.toString()); return new DerValue(DerValue.tag_IA5String, temp.toString());

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -95,19 +95,19 @@ public final class AccessDescription {
if (this == that) { if (this == that) {
return true; return true;
} }
return (accessMethod.equals((Object)that.getAccessMethod()) && return (accessMethod.equals(that.getAccessMethod()) &&
accessLocation.equals(that.getAccessLocation())); accessLocation.equals(that.getAccessLocation()));
} }
public String toString() { public String toString() {
String method = null; String method = null;
if (accessMethod.equals((Object)Ad_CAISSUERS_Id)) { if (accessMethod.equals(Ad_CAISSUERS_Id)) {
method = "caIssuers"; method = "caIssuers";
} else if (accessMethod.equals((Object)Ad_CAREPOSITORY_Id)) { } else if (accessMethod.equals(Ad_CAREPOSITORY_Id)) {
method = "caRepository"; method = "caRepository";
} else if (accessMethod.equals((Object)Ad_TIMESTAMPING_Id)) { } else if (accessMethod.equals(Ad_TIMESTAMPING_Id)) {
method = "timeStamping"; method = "timeStamping";
} else if (accessMethod.equals((Object)Ad_OCSP_Id)) { } else if (accessMethod.equals(Ad_OCSP_Id)) {
method = "ocsp"; method = "ocsp";
} else { } else {
method = accessMethod.toString(); method = accessMethod.toString();

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -241,7 +241,7 @@ public class CertificateExtensions implements CertAttrSet<Extension> {
public String getNameByOid(ObjectIdentifier oid) throws IOException { public String getNameByOid(ObjectIdentifier oid) throws IOException {
for (String name: map.keySet()) { for (String name: map.keySet()) {
if (map.get(name).getExtensionId().equals((Object)oid)) { if (map.get(name).getExtensionId().equals(oid)) {
return name; return name;
} }
} }

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -93,8 +93,7 @@ public class CertificatePolicyId {
*/ */
public boolean equals(Object other) { public boolean equals(Object other) {
if (other instanceof CertificatePolicyId) if (other instanceof CertificatePolicyId)
return id.equals((Object) return id.equals(((CertificatePolicyId) other).getIdentifier());
((CertificatePolicyId) other).getIdentifier());
else else
return false; return false;
} }

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -264,7 +264,7 @@ public class Extension implements java.security.cert.Extension {
Extension otherExt = (Extension) other; Extension otherExt = (Extension) other;
if (critical != otherExt.critical) if (critical != otherExt.critical)
return false; return false;
if (!extensionId.equals((Object)otherExt.extensionId)) if (!extensionId.equals(otherExt.extensionId))
return false; return false;
return Arrays.equals(extensionValue, otherExt.extensionValue); return Arrays.equals(extensionValue, otherExt.extensionValue);
} }

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -579,7 +579,7 @@ implements CertAttrSet<String>, Cloneable {
public boolean verifyRFC822SpecialCase(X500Name subject) throws IOException { public boolean verifyRFC822SpecialCase(X500Name subject) throws IOException {
for (AVA ava : subject.allAvas()) { for (AVA ava : subject.allAvas()) {
ObjectIdentifier attrOID = ava.getObjectIdentifier(); ObjectIdentifier attrOID = ava.getObjectIdentifier();
if (attrOID.equals((Object)PKCS9Attribute.EMAIL_ADDRESS_OID)) { if (attrOID.equals(PKCS9Attribute.EMAIL_ADDRESS_OID)) {
String attrValue = ava.getValueString(); String attrValue = ava.getValueString();
if (attrValue != null) { if (attrValue != null) {
RFC822Name emailName; RFC822Name emailName;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -120,7 +120,7 @@ public class OIDName implements GeneralNameInterface {
OIDName other = (OIDName)obj; OIDName other = (OIDName)obj;
return oid.equals((Object)other.oid); return oid.equals(other.oid);
} }
/** /**

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -176,7 +176,7 @@ public class OtherName implements GeneralNameInterface {
return false; return false;
} }
OtherName otherOther = (OtherName)other; OtherName otherOther = (OtherName)other;
if (!(otherOther.oid.equals((Object)oid))) { if (!(otherOther.oid.equals(oid))) {
return false; return false;
} }
GeneralNameInterface otherGNI = null; GeneralNameInterface otherGNI = null;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -321,7 +321,7 @@ public class RDN {
*/ */
DerValue findAttribute(ObjectIdentifier oid) { DerValue findAttribute(ObjectIdentifier oid) {
for (int i = 0; i < assertion.length; i++) { for (int i = 0; i < assertion.length; i++) {
if (assertion[i].oid.equals((Object)oid)) { if (assertion[i].oid.equals(oid)) {
return assertion[i].value; return assertion[i].value;
} }
} }

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -414,7 +414,7 @@ public class X509CRLEntryImpl extends X509CRLEntry
e.hasMoreElements();) { e.hasMoreElements();) {
ex = e.nextElement(); ex = e.nextElement();
inCertOID = ex.getExtensionId(); inCertOID = ex.getExtensionId();
if (inCertOID.equals((Object)findOID)) { if (inCertOID.equals(findOID)) {
crlExt = ex; crlExt = ex;
break; break;
} }

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -1039,7 +1039,7 @@ public class X509CRLImpl extends X509CRL implements DerEncoder {
e.hasMoreElements();) { e.hasMoreElements();) {
ex = e.nextElement(); ex = e.nextElement();
inCertOID = ex.getExtensionId(); inCertOID = ex.getExtensionId();
if (inCertOID.equals((Object)findOID)) { if (inCertOID.equals(findOID)) {
crlExt = ex; crlExt = ex;
break; break;
} }

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -1339,7 +1339,7 @@ public class X509CertImpl extends X509Certificate implements DerEncoder {
return ex; return ex;
} }
for (Extension ex2: extensions.getAllExtensions()) { for (Extension ex2: extensions.getAllExtensions()) {
if (ex2.getExtensionId().equals((Object)oid)) { if (ex2.getExtensionId().equals(oid)) {
//XXXX May want to consider cloning this //XXXX May want to consider cloning this
return ex2; return ex2;
} }
@ -1395,7 +1395,7 @@ public class X509CertImpl extends X509Certificate implements DerEncoder {
for (Extension ex : exts.getAllExtensions()) { for (Extension ex : exts.getAllExtensions()) {
ObjectIdentifier inCertOID = ex.getExtensionId(); ObjectIdentifier inCertOID = ex.getExtensionId();
if (inCertOID.equals((Object)findOID)) { if (inCertOID.equals(findOID)) {
certExt = ex; certExt = ex;
break; break;
} }

@ -1850,7 +1850,7 @@ public class UnicodeSet implements UnicodeMatcher {
syntaxError(chars, "Invalid property pattern"); syntaxError(chars, "Invalid property pattern");
} }
chars.jumpahead(pos.getIndex()); chars.jumpahead(pos.getIndex());
rebuiltPat.append(patStr.substring(0, pos.getIndex())); rebuiltPat.append(patStr, 0, pos.getIndex());
} }
//---------------------------------------------------------------- //----------------------------------------------------------------

@ -242,12 +242,13 @@ public class BuddhistCalendar extends GregorianCalendar {
return s; return s;
} }
p += yearField.length(); p += yearField.length();
StringBuilder sb = new StringBuilder(s.substring(0, p)); StringBuilder sb = new StringBuilder(s.length() + 10);
sb.append(s, 0, p);
// Skip the year number // Skip the year number
while (Character.isDigit(s.charAt(p++))) while (Character.isDigit(s.charAt(p++)))
; ;
int year = internalGet(YEAR) + BUDDHIST_YEAR_OFFSET; int year = internalGet(YEAR) + BUDDHIST_YEAR_OFFSET;
sb.append(year).append(s.substring(p - 1)); sb.append(year).append(s, p - 1, s.length());
return sb.toString(); return sb.toString();
} }

@ -145,7 +145,7 @@ static struct vmdesc *knownVMs = NULL;
static int knownVMsCount = 0; static int knownVMsCount = 0;
static int knownVMsLimit = 0; static int knownVMsLimit = 0;
static void GrowKnownVMs(); static void GrowKnownVMs(int minimum);
static int KnownVMIndex(const char* name); static int KnownVMIndex(const char* name);
static void FreeKnownVMs(); static void FreeKnownVMs();
static jboolean IsWildCardEnabled(); static jboolean IsWildCardEnabled();

@ -65,8 +65,8 @@ class UnixFileSystem extends FileSystem {
int n = len; int n = len;
while ((n > 0) && (pathname.charAt(n - 1) == '/')) n--; while ((n > 0) && (pathname.charAt(n - 1) == '/')) n--;
if (n == 0) return "/"; if (n == 0) return "/";
StringBuffer sb = new StringBuffer(pathname.length()); StringBuilder sb = new StringBuilder(pathname.length());
if (off > 0) sb.append(pathname.substring(0, off)); if (off > 0) sb.append(pathname, 0, off);
char prevChar = 0; char prevChar = 0;
for (int i = off; i < n; i++) { for (int i = off; i < n; i++) {
char c = pathname.charAt(i); char c = pathname.charAt(i);

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -83,18 +83,6 @@ class MimeTypesFileTypeDetector extends AbstractFileTypeDetector {
return mimeType; return mimeType;
} }
// Get the extension of a file name.
private static String getExtension(String name) {
String ext = "";
if (name != null && !name.isEmpty()) {
int dot = name.indexOf('.');
if ((dot >= 0) && (dot < name.length() - 1)) {
ext = name.substring(dot + 1);
}
}
return ext;
}
/** /**
* Parse the mime types file, and store the type-extension mappings into * Parse the mime types file, and store the type-extension mappings into
* mimeTypeMap. The mime types file is not loaded until the first probe * mimeTypeMap. The mime types file is not loaded until the first probe

@ -104,7 +104,7 @@ class WinNTFileSystem extends FileSystem {
if (off < 3) off = 0; /* Avoid fencepost cases with UNC pathnames */ if (off < 3) off = 0; /* Avoid fencepost cases with UNC pathnames */
int src; int src;
char slash = this.slash; char slash = this.slash;
StringBuffer sb = new StringBuffer(len); StringBuilder sb = new StringBuilder(len);
if (off == 0) { if (off == 0) {
/* Complete normalization, including prefix */ /* Complete normalization, including prefix */
@ -112,7 +112,7 @@ class WinNTFileSystem extends FileSystem {
} else { } else {
/* Partial normalization */ /* Partial normalization */
src = off; src = off;
sb.append(path.substring(0, off)); sb.append(path, 0, off);
} }
/* Remove redundant slashes from the remainder of the path, forcing all /* Remove redundant slashes from the remainder of the path, forcing all
@ -156,8 +156,7 @@ class WinNTFileSystem extends FileSystem {
} }
} }
String rv = sb.toString(); return sb.toString();
return rv;
} }
/* A normal Win32 pathname contains no duplicate slashes, except possibly /* A normal Win32 pathname contains no duplicate slashes, except possibly
@ -172,7 +171,7 @@ class WinNTFileSystem extends FileSystem {
else directory-relative (has form "z:foo") else directory-relative (has form "z:foo")
3 absolute local pathname (begins with "z:\\") 3 absolute local pathname (begins with "z:\\")
*/ */
private int normalizePrefix(String path, int len, StringBuffer sb) { private int normalizePrefix(String path, int len, StringBuilder sb) {
int src = 0; int src = 0;
while ((src < len) && isSlash(path.charAt(src))) src++; while ((src < len) && isSlash(path.charAt(src))) src++;
char c; char c;

@ -275,7 +275,7 @@ public final class JRSUIControl {
} }
Hit getHitForPoint(final double x, final double y, final double w, final double h, final double hitX, final double hitY) { Hit getHitForPoint(final int x, final int y, final int w, final int h, final int hitX, final int hitY) {
sync(); sync();
// reflect hitY about the midline of the control before sending to native // reflect hitY about the midline of the control before sending to native
final Hit hit = JRSUIConstants.getHit(getNativeHitPart(cfDictionaryPtr, priorEncodedProperties, currentEncodedProperties, x, y, w, h, hitX, 2 * y + h - hitY)); final Hit hit = JRSUIConstants.getHit(getNativeHitPart(cfDictionaryPtr, priorEncodedProperties, currentEncodedProperties, x, y, w, h, hitX, 2 * y + h - hitY));
@ -283,7 +283,7 @@ public final class JRSUIControl {
return hit; return hit;
} }
void getPartBounds(final double[] rect, final double x, final double y, final double w, final double h, final int part) { void getPartBounds(final double[] rect, final int x, final int y, final int w, final int h, final int part) {
if (rect == null) throw new NullPointerException("Cannot load null rect"); if (rect == null) throw new NullPointerException("Cannot load null rect");
if (rect.length != 4) throw new IllegalArgumentException("Rect must have four elements"); if (rect.length != 4) throw new IllegalArgumentException("Rect must have four elements");
@ -292,7 +292,7 @@ public final class JRSUIControl {
priorEncodedProperties = currentEncodedProperties; priorEncodedProperties = currentEncodedProperties;
} }
double getScrollBarOffsetChange(final double x, final double y, final double w, final double h, final int offset, final int visibleAmount, final int extent) { double getScrollBarOffsetChange(final int x, final int y, final int w, final int h, final int offset, final int visibleAmount, final int extent) {
sync(); sync();
final double offsetChange = getNativeScrollBarOffsetChange(cfDictionaryPtr, priorEncodedProperties, currentEncodedProperties, x, y, w, h, offset, visibleAmount, extent); final double offsetChange = getNativeScrollBarOffsetChange(cfDictionaryPtr, priorEncodedProperties, currentEncodedProperties, x, y, w, h, offset, visibleAmount, extent);
priorEncodedProperties = currentEncodedProperties; priorEncodedProperties = currentEncodedProperties;

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -25,14 +25,15 @@
package apple.laf; package apple.laf;
import com.apple.laf.AquaImageFactory.NineSliceMetrics;
import apple.laf.JRSUIConstants.*;
import sun.security.action.GetPropertyAction;
import java.security.AccessController; import java.security.AccessController;
public class JRSUIUtils { import apple.laf.JRSUIConstants.Hit;
import apple.laf.JRSUIConstants.ScrollBarPart;
import com.apple.laf.AquaImageFactory.NineSliceMetrics;
import sun.security.action.GetPropertyAction;
public final class JRSUIUtils {
static boolean isLeopard = isMacOSXLeopard(); static boolean isLeopard = isMacOSXLeopard();
static boolean isSnowLeopardOrBelow = isMacOSXSnowLeopardOrBelow(); static boolean isSnowLeopardOrBelow = isMacOSXSnowLeopardOrBelow();
@ -48,7 +49,9 @@ public class JRSUIUtils {
return currentMacOSXVersionMatchesGivenVersionRange(version, true, false, false); return currentMacOSXVersionMatchesGivenVersionRange(version, true, false, false);
} }
static boolean currentMacOSXVersionMatchesGivenVersionRange(final int version, final boolean inclusive, final boolean matchBelow, final boolean matchAbove) { static boolean currentMacOSXVersionMatchesGivenVersionRange(
final int version, final boolean inclusive,
final boolean matchBelow, final boolean matchAbove) {
// split the "10.x.y" version number // split the "10.x.y" version number
String osVersion = AccessController.doPrivileged(new GetPropertyAction("os.version")); String osVersion = AccessController.doPrivileged(new GetPropertyAction("os.version"));
String[] fragments = osVersion.split("\\."); String[] fragments = osVersion.split("\\.");
@ -99,12 +102,22 @@ public class JRSUIUtils {
return shouldUseScrollToClick(); return shouldUseScrollToClick();
} }
public static void getPartBounds(final double[] rect, final JRSUIControl control, final double x, final double y, final double w, final double h, final ScrollBarPart part) { public static void getPartBounds(final double[] rect,
final JRSUIControl control,
final int x, final int y, final int w,
final int h,
final ScrollBarPart part) {
control.getPartBounds(rect, x, y, w, h, part.ordinal); control.getPartBounds(rect, x, y, w, h, part.ordinal);
} }
public static double getNativeOffsetChange(final JRSUIControl control, final double x, final double y, final double w, final double h, final int offset, final int visibleAmount, final int extent) { public static double getNativeOffsetChange(final JRSUIControl control,
return control.getScrollBarOffsetChange(x, y, w, h, offset, visibleAmount, extent); final int x, final int y,
final int w, final int h,
final int offset,
final int visibleAmount,
final int extent) {
return control.getScrollBarOffsetChange(x, y, w, h, offset,
visibleAmount, extent);
} }
} }
@ -115,7 +128,10 @@ public class JRSUIUtils {
} }
public static class HitDetection { public static class HitDetection {
public static Hit getHitForPoint(final JRSUIControl control, final double x, final double y, final double w, final double h, final double hitX, final double hitY) { public static Hit getHitForPoint(final JRSUIControl control,
final int x, final int y, final int w,
final int h, final int hitX,
final int hitY) {
return control.getHitForPoint(x, y, w, h, hitX, hitY); return control.getHitForPoint(x, y, w, h, hitX, hitY);
} }
} }

@ -26,8 +26,8 @@ package java.awt;
import java.beans.ConstructorProperties; import java.beans.ConstructorProperties;
import java.io.InputStream; import java.io.InputStream;
import java.net.URL;
import java.security.AccessController; import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedExceptionAction; import java.security.PrivilegedExceptionAction;
import java.util.Hashtable; import java.util.Hashtable;
import java.util.Properties; import java.util.Properties;
@ -261,7 +261,7 @@ public class Cursor implements java.io.Serializable {
* @throws IllegalArgumentException if the specified cursor type is * @throws IllegalArgumentException if the specified cursor type is
* invalid * invalid
*/ */
static public Cursor getPredefinedCursor(int type) { public static Cursor getPredefinedCursor(int type) {
if (type < Cursor.DEFAULT_CURSOR || type > Cursor.MOVE_CURSOR) { if (type < Cursor.DEFAULT_CURSOR || type > Cursor.MOVE_CURSOR) {
throw new IllegalArgumentException("illegal cursor type"); throw new IllegalArgumentException("illegal cursor type");
} }
@ -286,7 +286,7 @@ public class Cursor implements java.io.Serializable {
* <code>GraphicsEnvironment.isHeadless</code> returns true * <code>GraphicsEnvironment.isHeadless</code> returns true
* @exception AWTException in case of erroneous retrieving of the cursor * @exception AWTException in case of erroneous retrieving of the cursor
*/ */
static public Cursor getSystemCustomCursor(final String name) public static Cursor getSystemCustomCursor(final String name)
throws AWTException, HeadlessException { throws AWTException, HeadlessException {
GraphicsEnvironment.checkHeadless(); GraphicsEnvironment.checkHeadless();
Cursor cursor = systemCustomCursors.get(name); Cursor cursor = systemCustomCursors.get(name);
@ -330,18 +330,15 @@ public class Cursor implements java.io.Serializable {
} catch (NumberFormatException nfe) { } catch (NumberFormatException nfe) {
throw new AWTException("failed to parse hotspot property for cursor: " + name); throw new AWTException("failed to parse hotspot property for cursor: " + name);
} }
final Toolkit toolkit = Toolkit.getDefaultToolkit();
try { final String file = RESOURCE_PREFIX + fileName;
final Toolkit toolkit = Toolkit.getDefaultToolkit(); final InputStream in = AccessController.doPrivileged(
final String file = RESOURCE_PREFIX + fileName; (PrivilegedAction<InputStream>) () -> {
return Cursor.class.getResourceAsStream(file);
cursor = AccessController.doPrivileged( });
(PrivilegedExceptionAction<Cursor>) () -> { try (in) {
URL url = Cursor.class.getResource(file); Image image = toolkit.createImage(in.readAllBytes());
Image image = toolkit.getImage(url); cursor = toolkit.createCustomCursor(image, hotPoint, localized);
return toolkit.createCustomCursor(image, hotPoint,
localized);
});
} catch (Exception e) { } catch (Exception e) {
throw new AWTException( throw new AWTException(
"Exception: " + e.getClass() + " " + e.getMessage() + "Exception: " + e.getClass() + " " + e.getMessage() +
@ -365,7 +362,7 @@ public class Cursor implements java.io.Serializable {
* *
* @return the default cursor * @return the default cursor
*/ */
static public Cursor getDefaultCursor() { public static Cursor getDefaultCursor() {
return getPredefinedCursor(Cursor.DEFAULT_CURSOR); return getPredefinedCursor(Cursor.DEFAULT_CURSOR);
} }

@ -58,6 +58,14 @@ import sun.awt.PeerEvent;
import sun.awt.SunToolkit; import sun.awt.SunToolkit;
import sun.util.CoreResourceBundleControl; import sun.util.CoreResourceBundleControl;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.Arrays;
import java.util.ServiceLoader;
import java.util.Set;
import java.util.stream.Collectors;
import javax.accessibility.AccessibilityProvider;
/** /**
* This class is the abstract superclass of all actual * This class is the abstract superclass of all actual
* implementations of the Abstract Window Toolkit. Subclasses of * implementations of the Abstract Window Toolkit. Subclasses of
@ -420,7 +428,7 @@ public abstract class Toolkit {
} }
} }
// Get the names of any assistive technolgies to load. First // Get the names of any assistive technologies to load. First
// check the system property and then check the properties // check the system property and then check the properties
// file. // file.
String classNames = System.getProperty("javax.accessibility.assistive_technologies"); String classNames = System.getProperty("javax.accessibility.assistive_technologies");
@ -436,85 +444,125 @@ public abstract class Toolkit {
} }
/** /**
* Loads additional classes into the VM, using the property * Rethrow the AWTError but include the cause.
* 'assistive_technologies' specified in the Sun reference
* implementation by a line in the 'accessibility.properties'
* file. The form is "assistive_technologies=..." where
* the "..." is a comma-separated list of assistive technology
* classes to load. Each class is loaded in the order given
* and a single instance of each is created using
* Class.forName(class).newInstance(). All errors are handled
* via an AWTError exception.
* *
* <p>The assumption is made that assistive technology classes are supplied * @param s the error message
* as part of INSTALLED (as opposed to: BUNDLED) extensions or specified * @param e the original exception
* on the class path * @throw the new AWTError including the cause (the original exception)
* (and therefore can be loaded using the class loader returned by */
* a call to <code>ClassLoader.getSystemClassLoader</code>, whose private static void newAWTError(Throwable e, String s) {
* delegation parent is the extension class loader for installed AWTError newAWTError = new AWTError(s);
* extensions). newAWTError.initCause(e);
throw newAWTError;
}
/**
* When a service provider for Assistive Technology is not found look for a
* supporting class on the class path and instantiate it.
*
* @param atName the name of the class to be loaded
*/
private static void fallbackToLoadClassForAT(String atName) {
try {
Class.forName(atName, false, ClassLoader.getSystemClassLoader()).newInstance();
} catch (ClassNotFoundException e) {
newAWTError(e, "Assistive Technology not found: " + atName);
} catch (InstantiationException e) {
newAWTError(e, "Could not instantiate Assistive Technology: " + atName);
} catch (IllegalAccessException e) {
newAWTError(e, "Could not access Assistive Technology: " + atName);
} catch (Exception e) {
newAWTError(e, "Error trying to install Assistive Technology: " + atName);
}
}
/**
* Loads accessibility support using the property assistive_technologies.
* The form is assistive_technologies= followed by a comma-separated list of
* assistive technology providers to load. The order in which providers are
* loaded is determined by the order in which the ServiceLoader discovers
* implementations of the AccessibilityProvider interface, not by the order
* of provider names in the property list. When a provider is found its
* accessibility implementation will be started by calling the provider's
* activate method. All errors are handled via an AWTError exception.
*/ */
private static void loadAssistiveTechnologies() { private static void loadAssistiveTechnologies() {
// Load any assistive technologies // Load any assistive technologies
if (atNames != null) { if (atNames != null) {
ClassLoader cl = ClassLoader.getSystemClassLoader(); ClassLoader cl = ClassLoader.getSystemClassLoader();
StringTokenizer parser = new StringTokenizer(atNames," ,"); Set<String> names = Arrays.stream(atNames.split(","))
String atName; .map(String::trim)
while (parser.hasMoreTokens()) { .collect(Collectors.toSet());
atName = parser.nextToken(); final Map<String, AccessibilityProvider> providers = new HashMap<>();
AccessController.doPrivileged((PrivilegedAction<Void>) () -> {
try { try {
Class<?> clazz; for (AccessibilityProvider p : ServiceLoader.load(AccessibilityProvider.class, cl)) {
if (cl != null) { String name = p.getName();
clazz = cl.loadClass(atName); if (names.contains(name) && !providers.containsKey(name)) {
} else { p.activate();
clazz = Class.forName(atName); providers.put(name, p);
}
} }
clazz.newInstance(); } catch (java.util.ServiceConfigurationError | Exception e) {
} catch (ClassNotFoundException e) { newAWTError(e, "Could not load or activate service provider");
throw new AWTError("Assistive Technology not found: "
+ atName);
} catch (InstantiationException e) {
throw new AWTError("Could not instantiate Assistive"
+ " Technology: " + atName);
} catch (IllegalAccessException e) {
throw new AWTError("Could not access Assistive"
+ " Technology: " + atName);
} catch (Exception e) {
throw new AWTError("Error trying to install Assistive"
+ " Technology: " + atName + " " + e);
} }
} return null;
});
names.stream()
.filter(n -> !providers.containsKey(n))
.forEach(Toolkit::fallbackToLoadClassForAT);
} }
} }
/** /**
* Gets the default toolkit. * Gets the default toolkit.
* <p> * <p>
* If a system property named <code>"java.awt.headless"</code> is set * If a system property named {@code "java.awt.headless"} is set
* to <code>true</code> then the headless implementation * to {@code true} then the headless implementation
* of <code>Toolkit</code> is used. * of {@code Toolkit} is used.
* <p> * <p>
* If there is no <code>"java.awt.headless"</code> or it is set to * If there is no {@code "java.awt.headless"} or it is set to
* <code>false</code> and there is a system property named * {@code false} and there is a system property named
* <code>"awt.toolkit"</code>, * {@code "awt.toolkit"},
* that property is treated as the name of a class that is a subclass * that property is treated as the name of a class that is a subclass
* of <code>Toolkit</code>; * of {@code Toolkit};
* otherwise the default platform-specific implementation of * otherwise the default platform-specific implementation of
* <code>Toolkit</code> is used. * {@code Toolkit} is used.
* <p> * <p>
* Also loads additional classes into the VM, using the property * If this Toolkit is not a headless implementation and if they exist, service
* 'assistive_technologies' specified in the Sun reference * providers of {@link javax.accessibility.AccessibilityProvider} will be loaded
* implementation by a line in the 'accessibility.properties' * if specified by the system property
* file. The form is "assistive_technologies=..." where * {@code javax.accessibility.assistive_technologies}.
* the "..." is a comma-separated list of assistive technology * <p>
* classes to load. Each class is loaded in the order given * An example of setting this property is to invoke Java with
* and a single instance of each is created using * {@code -Djavax.accessibility.assistive_technologies=MyServiceProvider}.
* Class.forName(class).newInstance(). This is done just after * In addition to MyServiceProvider other service providers can be specified
* the AWT toolkit is created. All errors are handled via an * using a comma separated list. Service providers are loaded after the AWT
* AWTError exception. * toolkit is created. All errors are handled via an AWTError exception.
* @return the default toolkit. * <p>
* The names specified in the assistive_technologies property are used to query
* each service provider implementation. If the requested name matches the
* {@linkplain AccessibilityProvider#getName name} of the service provider, the
* {@link AccessibilityProvider#activate} method will be invoked to activate the
* matching service provider.
*
* @implSpec
* If assistive technology service providers are not specified with a system
* property this implementation will look in a properties file located as follows:
* <ul>
* <li> {@code ${user.home}/.accessibility.properties}
* <li> {@code ${java.home}/conf/accessibility.properties}
* </ul>
* Only the first of these files to be located will be consulted. The requested
* service providers are specified by setting the {@code assistive_technologies=}
* property. A single provider or a comma separated list of providers can be
* specified.
*
* @return the default toolkit.
* @exception AWTError if a toolkit could not be found, or * @exception AWTError if a toolkit could not be found, or
* if one could not be accessed or instantiated. * if one could not be accessed or instantiated.
* @see java.util.ServiceLoader
* @see javax.accessibility.AccessibilityProvider
*/ */
public static synchronized Toolkit getDefaultToolkit() { public static synchronized Toolkit getDefaultToolkit() {
if (toolkit == null) { if (toolkit == null) {
@ -550,7 +598,9 @@ public abstract class Toolkit {
return null; return null;
} }
}); });
loadAssistiveTechnologies(); if (!GraphicsEnvironment.isHeadless()) {
loadAssistiveTechnologies();
}
} }
return toolkit; return toolkit;
} }

@ -0,0 +1,93 @@
/*
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package javax.accessibility;
/**
* Service Provider Interface (SPI) for Assistive Technology.
* <p>
* This service provider class provides mappings from the platform
* specific accessibility APIs to the Java Accessibility API.
* <p>
* Each service provider implementation is named and can be activated via the
* {@link #activate} method. Service providers can be loaded when the default
* {@link java.awt.Toolkit toolkit} is initialized.
*
* @apiNote There will typically be one provider per platform, such as Windows
* or Linux, to support accessibility for screen readers and magnifiers. However,
* more than one service provider can be activated. For example, a test tool
* which provides visual results obtained by interrogating the Java Accessibility
* API can be activated along with the activation of the support for screen readers
* and screen magnifiers.
*
* @see java.awt.Toolkit#getDefaultToolkit
* @see java.util.ServiceLoader
* @since 1.9
*/
public abstract class AccessibilityProvider {
/**
* Initializes a new accessibility provider.
*
* @throws SecurityException
* If a security manager has been installed and it denies
* {@link RuntimePermission} {@code "accessibilityProvider"}
*/
protected AccessibilityProvider() {
// Use a permission check when calling a private constructor to check that
// the proper security permission has been granted before the Object superclass
// is called. If an exception is thrown before the Object superclass is
// constructed a finalizer in a subclass of this class will not be run.
// This protects against a finalizer vulnerability.
this(checkPermission());
}
private AccessibilityProvider(Void ignore) { }
/**
* If this code is running with a security manager and if the permission
* "accessibilityProvider" has not been granted SecurityException will be thrown.
*
*/
private static Void checkPermission() {
SecurityManager sm = System.getSecurityManager();
if (sm != null)
sm.checkPermission(new RuntimePermission("accessibilityProvider"));
return null;
}
/**
* Returns the name of this service provider. This name is used to locate a
* requested service provider.
*
* @return the name of this service provider
*/
public abstract String getName();
/**
* Activates the support provided by this service provider.
*/
public abstract void activate();
}

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -896,11 +896,12 @@ public class MetalTabbedPaneUI extends BasicTabbedPaneUI {
// Paint the background for the tab area // Paint the background for the tab area
if ( tabPane.isOpaque() ) { if ( tabPane.isOpaque() ) {
if (!c.isBackgroundSet() && (tabAreaBackground != null)) { Color background = c.getBackground();
if (background instanceof UIResource && tabAreaBackground != null) {
g.setColor(tabAreaBackground); g.setColor(tabAreaBackground);
} }
else { else {
g.setColor( c.getBackground() ); g.setColor(background);
} }
switch ( tabPlacement ) { switch ( tabPlacement ) {
case LEFT: case LEFT:

@ -291,7 +291,7 @@ public abstract class SunToolkit extends Toolkit
// Maps from non-Component/MenuComponent to AppContext. // Maps from non-Component/MenuComponent to AppContext.
// WeakHashMap<Component,AppContext> // WeakHashMap<Component,AppContext>
private static final Map<Object, AppContext> appContextMap = private static final Map<Object, AppContext> appContextMap =
Collections.synchronizedMap(new WeakHashMap<Object, AppContext>()); Collections.synchronizedMap(new WeakIdentityHashMap<Object, AppContext>());
/** /**
* Sets the appContext field of target. If target is not a Component or * Sets the appContext field of target. If target is not a Component or

@ -0,0 +1,195 @@
package sun.awt;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
import java.util.*;
// A weak key reference hash map that uses System.identityHashCode() and "=="
// instead of hashCode() and equals(Object)
class WeakIdentityHashMap<K, V> implements Map<K, V> {
private final Map<WeakKey<K>, V> map;
private final transient ReferenceQueue<K> queue = new ReferenceQueue<K>();
/**
* Constructs a new, empty identity hash map with a default initial
* size (16).
*/
public WeakIdentityHashMap() {
map = new HashMap<>(16);
}
/**
* Constructs a new, empty identity map with the specified initial size.
*/
public WeakIdentityHashMap(int initialSize) {
map = new HashMap<>(initialSize);
}
private Map<WeakKey<K>, V> getMap() {
for(Reference<? extends K> ref; (ref = this.queue.poll()) != null;) {
map.remove(ref);
}
return map;
}
@Override
public int size() {
return getMap().size();
}
@Override
public boolean isEmpty() {
return getMap().isEmpty();
}
@Override
public boolean containsKey(Object key) {
return getMap().containsKey(new WeakKey<>(key, null));
}
@Override
public boolean containsValue(Object value) {
return getMap().containsValue(value);
}
@Override
public V get(Object key) {
return getMap().get(new WeakKey<>(key, null));
}
@Override
public V put(K key, V value) {
return getMap().put(new WeakKey<K>(key, queue), value);
}
@Override
public V remove(Object key) {
return getMap().remove(new WeakKey<>(key, null));
}
@Override
public void putAll(Map<? extends K, ? extends V> m) {
for (Entry<? extends K, ? extends V> entry : m.entrySet()) {
put(entry.getKey(), entry.getValue());
}
}
@Override
public void clear() {
getMap().clear();
}
@Override
public Set<K> keySet() {
return new AbstractSet<K>() {
@Override
public Iterator<K> iterator() {
return new Iterator<K>() {
private K next;
Iterator<WeakKey<K>> iterator = getMap().keySet().iterator();
@Override
public boolean hasNext() {
while (iterator.hasNext()) {
if ((next = iterator.next().get()) != null) {
return true;
}
}
return false;
}
@Override
public K next() {
if(next == null && !hasNext()) {
throw new NoSuchElementException();
}
K ret = next;
next = null;
return ret;
}
};
}
@Override
public int size() {
return getMap().keySet().size();
}
};
}
@Override
public Collection<V> values() {
return getMap().values();
}
@Override
public Set<Entry<K, V>> entrySet() {
return new AbstractSet<Entry<K, V>>() {
@Override
public Iterator<Entry<K, V>> iterator() {
final Iterator<Entry<WeakKey<K>, V>> iterator = getMap().entrySet().iterator();
return new Iterator<Entry<K, V>>() {
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public Entry<K, V> next() {
return new Entry<K, V>() {
Entry<WeakKey<K>, V> entry = iterator.next();
@Override
public K getKey() {
return entry.getKey().get();
}
@Override
public V getValue() {
return entry.getValue();
}
@Override
public V setValue(V value) {
return null;
}
};
}
};
}
@Override
public int size() {
return getMap().entrySet().size();
}
};
}
private static class WeakKey<K> extends WeakReference<K> {
private final int hash;
WeakKey(K key, ReferenceQueue <K> q) {
super(key, q);
hash = System.identityHashCode(key);
}
@Override
public boolean equals(Object o) {
if(this == o) {
return true;
} else if( o instanceof WeakKey ) {
return get() == ((WeakKey)o).get();
} else {
return false;
}
}
@Override
public int hashCode() {
return hash;
}
}
}

@ -175,7 +175,7 @@ LookupProcessor::LookupProcessor(const LETableReference &baseAddress,
LEReferenceTo<LangSysTable> langSysTable; LEReferenceTo<LangSysTable> langSysTable;
le_uint16 featureCount = 0; le_uint16 featureCount = 0;
le_uint16 lookupListCount = 0; le_uint16 lookupListCount = 0;
le_uint16 requiredFeatureIndex; le_uint16 requiredFeatureIndex = 0xFFFF;
if (LE_FAILURE(success)) { if (LE_FAILURE(success)) {
return; return;

@ -260,7 +260,9 @@ cmsBool _MultiplyMatrix(cmsPipeline* Lut)
cmsStage* Multmat = cmsStageAllocMatrix(Lut->ContextID, 3, 3, (const cmsFloat64Number*) &res, NULL); cmsStage* Multmat = cmsStageAllocMatrix(Lut->ContextID, 3, 3, (const cmsFloat64Number*) &res, NULL);
// Recover the chain // Recover the chain
Multmat->Next = chain; if (Multmat != NULL) {
Multmat->Next = chain;
}
*pt1 = Multmat; *pt1 = Multmat;
} }

@ -2466,7 +2466,7 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
private static XEventDispatcher oops_waiter; private static XEventDispatcher oops_waiter;
private static boolean oops_updated; private static boolean oops_updated;
private static boolean oops_move; private static int oops_position = 0;
/** /**
* @inheritDoc * @inheritDoc
@ -2495,9 +2495,12 @@ public final class XToolkit extends UNIXToolkit implements Runnable {
oops_updated = false; oops_updated = false;
long event_number = getEventNumber(); long event_number = getEventNumber();
// Generate OOPS ConfigureNotify event // Generate OOPS ConfigureNotify event
XlibWrapper.XMoveWindow(getDisplay(), win.getWindow(), oops_move ? 0 : 1, 0); XlibWrapper.XMoveWindow(getDisplay(), win.getWindow(), ++oops_position, 0);
// Change win position each time to avoid system optimization // Change win position each time to avoid system optimization
oops_move = !oops_move; if (oops_position > 50) {
oops_position = 0;
}
XSync(); XSync();
eventLog.finer("Generated OOPS ConfigureNotify event"); eventLog.finer("Generated OOPS ConfigureNotify event");

@ -29,6 +29,7 @@ import java.awt.Image;
import java.awt.Toolkit; import java.awt.Toolkit;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.concurrent.*; import java.util.concurrent.*;
@ -233,6 +234,7 @@ final class Win32ShellFolder2 extends ShellFolder {
private Image smallIcon = null; private Image smallIcon = null;
private Image largeIcon = null; private Image largeIcon = null;
private Boolean isDir = null; private Boolean isDir = null;
private final boolean isLib;
/* /*
* The following is to identify the My Documents folder as being special * The following is to identify the My Documents folder as being special
@ -254,6 +256,7 @@ final class Win32ShellFolder2 extends ShellFolder {
// Desktop is parent of DRIVES and NETWORK, not necessarily // Desktop is parent of DRIVES and NETWORK, not necessarily
// other special shell folders. // other special shell folders.
super(null, composePathForCsidl(csidl)); super(null, composePathForCsidl(csidl));
isLib = false;
invoke(new Callable<Void>() { invoke(new Callable<Void>() {
public Void call() throws InterruptedException { public Void call() throws InterruptedException {
@ -279,7 +282,7 @@ final class Win32ShellFolder2 extends ShellFolder {
// Now we know that parent isn't immediate to 'this' because it // Now we know that parent isn't immediate to 'this' because it
// has a continued ID list. Create a shell folder for this child // has a continued ID list. Create a shell folder for this child
// pidl and make it the new 'parent'. // pidl and make it the new 'parent'.
parent = new Win32ShellFolder2((Win32ShellFolder2) parent, childPIDL); parent = createShellFolder((Win32ShellFolder2) parent, childPIDL);
} else { } else {
// No grandchildren means we have arrived at the parent of 'this', // No grandchildren means we have arrived at the parent of 'this',
// and childPIDL is directly relative to parent. // and childPIDL is directly relative to parent.
@ -301,8 +304,9 @@ final class Win32ShellFolder2 extends ShellFolder {
/** /**
* Create a system shell folder * Create a system shell folder
*/ */
Win32ShellFolder2(Win32ShellFolder2 parent, long pIShellFolder, long relativePIDL, String path) { Win32ShellFolder2(Win32ShellFolder2 parent, long pIShellFolder, long relativePIDL, String path, boolean isLib) {
super(parent, (path != null) ? path : "ShellFolder: "); super(parent, (path != null) ? path : "ShellFolder: ");
this.isLib = isLib;
this.disposer.pIShellFolder = pIShellFolder; this.disposer.pIShellFolder = pIShellFolder;
this.disposer.relativePIDL = relativePIDL; this.disposer.relativePIDL = relativePIDL;
sun.java2d.Disposer.addRecord(this, disposer); sun.java2d.Disposer.addRecord(this, disposer);
@ -312,16 +316,19 @@ final class Win32ShellFolder2 extends ShellFolder {
/** /**
* Creates a shell folder with a parent and relative PIDL * Creates a shell folder with a parent and relative PIDL
*/ */
Win32ShellFolder2(final Win32ShellFolder2 parent, final long relativePIDL) throws InterruptedException { static Win32ShellFolder2 createShellFolder(Win32ShellFolder2 parent, long pIDL)
super(parent, throws InterruptedException {
invoke(new Callable<String>() { String path = invoke(new Callable<String>() {
public String call() { public String call() {
return getFileSystemPath(parent.getIShellFolder(), relativePIDL); return getFileSystemPath(parent.getIShellFolder(), pIDL);
} }
}, RuntimeException.class) }, RuntimeException.class);
); String libPath = resolveLibrary(path);
this.disposer.relativePIDL = relativePIDL; if (libPath == null) {
sun.java2d.Disposer.addRecord(this, disposer); return new Win32ShellFolder2(parent, 0, pIDL, path, false);
} else {
return new Win32ShellFolder2(parent, 0, pIDL, libPath, true);
}
} }
// Initializes the desktop shell folder // Initializes the desktop shell folder
@ -601,20 +608,24 @@ final class Win32ShellFolder2 extends ShellFolder {
} }
String path = getDisplayNameOf(parentIShellFolder, relativePIDL, String path = getDisplayNameOf(parentIShellFolder, relativePIDL,
SHGDN_FORPARSING); SHGDN_FORPARSING);
return path;
}
private static String resolveLibrary(String path) {
// if this is a library its default save location is taken as a path // if this is a library its default save location is taken as a path
// this is a temp fix until java.io starts support Libraries // this is a temp fix until java.io starts support Libraries
if( path != null && path.startsWith("::{") && if( path != null && path.startsWith("::{") &&
path.toLowerCase().endsWith(".library-ms")) { path.toLowerCase().endsWith(".library-ms")) {
for (KnownFolderDefinition kf : KnownFolderDefinition.libraries) { for (KnownFolderDefinition kf : KnownFolderDefinition.libraries) {
if( path.toLowerCase().endsWith( if (path.toLowerCase().endsWith(
kf.relativePath.toLowerCase()) && "\\" + kf.relativePath.toLowerCase()) &&
path.toUpperCase().startsWith( path.toUpperCase().startsWith(
kf.parsingName.substring(0, 40).toUpperCase()) ) { kf.parsingName.substring(0, 40).toUpperCase())) {
return kf.saveLocation; return kf.saveLocation;
} }
} }
} }
return path; return null;
} }
// Needs to be accessible to Win32ShellFolderManager2 // Needs to be accessible to Win32ShellFolderManager2
@ -750,7 +761,7 @@ final class Win32ShellFolder2 extends ShellFolder {
&& pidlsEqual(pIShellFolder, childPIDL, personal.disposer.relativePIDL)) { && pidlsEqual(pIShellFolder, childPIDL, personal.disposer.relativePIDL)) {
childFolder = personal; childFolder = personal;
} else { } else {
childFolder = new Win32ShellFolder2(Win32ShellFolder2.this, childPIDL); childFolder = createShellFolder(Win32ShellFolder2.this, childPIDL);
releasePIDL = false; releasePIDL = false;
} }
list.add(childFolder); list.add(childFolder);
@ -790,10 +801,11 @@ final class Win32ShellFolder2 extends ShellFolder {
while ((childPIDL = getNextChild(pEnumObjects)) != 0) { while ((childPIDL = getNextChild(pEnumObjects)) != 0) {
if (getAttributes0(pIShellFolder, childPIDL, ATTRIB_FILESYSTEM) != 0) { if (getAttributes0(pIShellFolder, childPIDL, ATTRIB_FILESYSTEM) != 0) {
String path = getFileSystemPath(pIShellFolder, childPIDL); String path = getFileSystemPath(pIShellFolder, childPIDL);
if(isLib) path = resolveLibrary( path );
if (path != null && path.equalsIgnoreCase(filePath)) { if (path != null && path.equalsIgnoreCase(filePath)) {
long childIShellFolder = bindToObject(pIShellFolder, childPIDL); long childIShellFolder = bindToObject(pIShellFolder, childPIDL);
child = new Win32ShellFolder2(Win32ShellFolder2.this, child = new Win32ShellFolder2(Win32ShellFolder2.this,
childIShellFolder, childPIDL, path); childIShellFolder, childPIDL, path, isLib);
break; break;
} }
} }
@ -839,14 +851,14 @@ final class Win32ShellFolder2 extends ShellFolder {
return getLinkLocation(true); return getLinkLocation(true);
} }
private ShellFolder getLinkLocation(final boolean resolve) { private Win32ShellFolder2 getLinkLocation(final boolean resolve) {
return invoke(new Callable<ShellFolder>() { return invoke(new Callable<Win32ShellFolder2>() {
public ShellFolder call() { public Win32ShellFolder2 call() {
if (!isLink()) { if (!isLink()) {
return null; return null;
} }
ShellFolder location = null; Win32ShellFolder2 location = null;
long linkLocationPIDL = getLinkLocation(getParentIShellFolder(), long linkLocationPIDL = getLinkLocation(getParentIShellFolder(),
getRelativePIDL(), resolve); getRelativePIDL(), resolve);
if (linkLocationPIDL != 0) { if (linkLocationPIDL != 0) {
@ -956,7 +968,7 @@ final class Win32ShellFolder2 extends ShellFolder {
// NOTE: this method uses COM and must be called on the 'COM thread'. See ComInvoker for the details // NOTE: this method uses COM and must be called on the 'COM thread'. See ComInvoker for the details
private static native long extractIcon(long parentIShellFolder, long relativePIDL, private static native long extractIcon(long parentIShellFolder, long relativePIDL,
boolean getLargeIcon); boolean getLargeIcon, boolean getDefaultIcon);
// Returns an icon from the Windows system icon list in the form of an HICON // Returns an icon from the Windows system icon list in the form of an HICON
private static native long getSystemIcon(int iconID); private static native long getSystemIcon(int iconID);
@ -1007,7 +1019,13 @@ final class Win32ShellFolder2 extends ShellFolder {
invoke(new Callable<Image>() { invoke(new Callable<Image>() {
public Image call() { public Image call() {
Image newIcon = null; Image newIcon = null;
if (isFileSystem()) { if (isLink()) {
Win32ShellFolder2 folder = getLinkLocation(false);
if (folder != null && folder.isLibrary()) {
return folder.getIcon(getLargeIcon);
}
}
if (isFileSystem() || isLibrary()) {
long parentIShellIcon = (parent != null) long parentIShellIcon = (parent != null)
? ((Win32ShellFolder2) parent).getIShellIcon() ? ((Win32ShellFolder2) parent).getIShellIcon()
: 0L; : 0L;
@ -1037,7 +1055,19 @@ final class Win32ShellFolder2 extends ShellFolder {
if (newIcon == null) { if (newIcon == null) {
// These are only cached per object // These are only cached per object
long hIcon = extractIcon(getParentIShellFolder(), long hIcon = extractIcon(getParentIShellFolder(),
getRelativePIDL(), getLargeIcon); getRelativePIDL(), getLargeIcon, false);
// E_PENDING: loading can take time so get the default
if(hIcon <= 0) {
hIcon = extractIcon(getParentIShellFolder(),
getRelativePIDL(), getLargeIcon, true);
if(hIcon <= 0) {
if (isDirectory()) {
return getShell32Icon(4, getLargeIcon);
} else {
return getShell32Icon(1, getLargeIcon);
}
}
}
newIcon = makeIcon(hIcon, getLargeIcon); newIcon = makeIcon(hIcon, getLargeIcon);
disposeIcon(hIcon); disposeIcon(hIcon);
} }
@ -1129,6 +1159,8 @@ final class Win32ShellFolder2 extends ShellFolder {
private static final int LVCFMT_CENTER = 2; private static final int LVCFMT_CENTER = 2;
public ShellFolderColumnInfo[] getFolderColumns() { public ShellFolderColumnInfo[] getFolderColumns() {
ShellFolder library = resolveLibrary();
if (library != null) return library.getFolderColumns();
return invoke(new Callable<ShellFolderColumnInfo[]>() { return invoke(new Callable<ShellFolderColumnInfo[]>() {
public ShellFolderColumnInfo[] call() { public ShellFolderColumnInfo[] call() {
ShellFolderColumnInfo[] columns = doGetColumnInfo(getIShellFolder()); ShellFolderColumnInfo[] columns = doGetColumnInfo(getIShellFolder());
@ -1159,6 +1191,10 @@ final class Win32ShellFolder2 extends ShellFolder {
} }
public Object getFolderColumnValue(final int column) { public Object getFolderColumnValue(final int column) {
if(!isLibrary()) {
ShellFolder library = resolveLibrary();
if (library != null) return library.getFolderColumnValue(column);
}
return invoke(new Callable<Object>() { return invoke(new Callable<Object>() {
public Object call() { public Object call() {
return doGetColumnValue(getParentIShellFolder(), getRelativePIDL(), column); return doGetColumnValue(getParentIShellFolder(), getRelativePIDL(), column);
@ -1166,6 +1202,26 @@ final class Win32ShellFolder2 extends ShellFolder {
}); });
} }
boolean isLibrary() {
return isLib;
}
private ShellFolder resolveLibrary() {
for (ShellFolder f = this; f != null; f = f.parent) {
if (!f.isFileSystem()) {
if (f instanceof Win32ShellFolder2 &&
((Win32ShellFolder2)f).isLibrary()) {
try {
return getShellFolder(new File(getPath()));
} catch (FileNotFoundException e) {
}
}
break;
}
}
return null;
}
// NOTE: this method uses COM and must be called on the 'COM thread'. See ComInvoker for the details // NOTE: this method uses COM and must be called on the 'COM thread'. See ComInvoker for the details
private native ShellFolderColumnInfo[] doGetColumnInfo(long iShellFolder2); private native ShellFolderColumnInfo[] doGetColumnInfo(long iShellFolder2);

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -94,7 +94,7 @@ final class Win32ShellFolderManager2 extends ShellFolderManager {
while (pIDL != 0) { while (pIDL != 0) {
long curPIDL = Win32ShellFolder2.copyFirstPIDLEntry(pIDL); long curPIDL = Win32ShellFolder2.copyFirstPIDLEntry(pIDL);
if (curPIDL != 0) { if (curPIDL != 0) {
parent = new Win32ShellFolder2(parent, curPIDL); parent = Win32ShellFolder2.createShellFolder(parent, curPIDL);
pIDL = Win32ShellFolder2.getNextPIDLEntry(pIDL); pIDL = Win32ShellFolder2.getNextPIDLEntry(pIDL);
} else { } else {
// The list is empty if the parent is Desktop and pIDL is a shortcut to Desktop // The list is empty if the parent is Desktop and pIDL is a shortcut to Desktop

@ -868,10 +868,11 @@ JNIEXPORT jint JNICALL Java_sun_awt_shell_Win32ShellFolder2_getIconIndex
/* /*
* Class: sun_awt_shell_Win32ShellFolder2 * Class: sun_awt_shell_Win32ShellFolder2
* Method: extractIcon * Method: extractIcon
* Signature: (JJZ)J * Signature: (JJZZ)J
*/ */
JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon
(JNIEnv* env, jclass cls, jlong pIShellFolderL, jlong relativePIDL, jboolean getLargeIcon) (JNIEnv* env, jclass cls, jlong pIShellFolderL, jlong relativePIDL,
jboolean getLargeIcon, jboolean getDefaultIcon)
{ {
IShellFolder* pIShellFolder = (IShellFolder*)pIShellFolderL; IShellFolder* pIShellFolder = (IShellFolder*)pIShellFolderL;
LPITEMIDLIST pidl = (LPITEMIDLIST)relativePIDL; LPITEMIDLIST pidl = (LPITEMIDLIST)relativePIDL;
@ -889,7 +890,8 @@ JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon
WCHAR szBuf[MAX_PATH]; WCHAR szBuf[MAX_PATH];
INT index; INT index;
UINT flags; UINT flags;
hres = pIcon->GetIconLocation(GIL_FORSHELL, szBuf, MAX_PATH, &index, &flags); UINT uFlags = getDefaultIcon ? GIL_DEFAULTICON : GIL_FORSHELL | GIL_ASYNC;
hres = pIcon->GetIconLocation(uFlags, szBuf, MAX_PATH, &index, &flags);
if (SUCCEEDED(hres)) { if (SUCCEEDED(hres)) {
HICON hIconLarge; HICON hIconLarge;
hres = pIcon->Extract(szBuf, index, &hIconLarge, &hIcon, (16 << 16) + 32); hres = pIcon->Extract(szBuf, index, &hIconLarge, &hIcon, (16 << 16) + 32);
@ -901,6 +903,9 @@ JNIEXPORT jlong JNICALL Java_sun_awt_shell_Win32ShellFolder2_extractIcon
fn_DestroyIcon((HICON)hIconLarge); fn_DestroyIcon((HICON)hIconLarge);
} }
} }
} else if (hres == E_PENDING) {
pIcon->Release();
return E_PENDING;
} }
pIcon->Release(); pIcon->Release();
} }
@ -1284,7 +1289,6 @@ JNIEXPORT jint JNICALL
JNIEXPORT jobjectArray JNICALL Java_sun_awt_shell_Win32ShellFolder2_loadKnownFolders JNIEXPORT jobjectArray JNICALL Java_sun_awt_shell_Win32ShellFolder2_loadKnownFolders
(JNIEnv* env, jclass cls ) (JNIEnv* env, jclass cls )
{ {
CoInitialize(NULL);
IKnownFolderManager* pkfm = NULL; IKnownFolderManager* pkfm = NULL;
HRESULT hr = CoCreateInstance(CLSID_KnownFolderManager, NULL, HRESULT hr = CoCreateInstance(CLSID_KnownFolderManager, NULL,
CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pkfm)); CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pkfm));

@ -1,5 +1,5 @@
// //
// Copyright (c) 1997, 2004, Oracle and/or its affiliates. All rights reserved. // Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
// DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. // DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
// //
// This code is free software; you can redistribute it and/or modify it // This code is free software; you can redistribute it and/or modify it
@ -31,7 +31,6 @@
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
HAND_CURSOR CURSOR DISCARDABLE "hand.cur"
AWT_ICON ICON DISCARDABLE "awt.ico" AWT_ICON ICON DISCARDABLE "awt.ico"
CHECK_BITMAP BITMAP DISCARDABLE "check.bmp" CHECK_BITMAP BITMAP DISCARDABLE "check.bmp"

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -144,7 +144,7 @@ AwtCursor * AwtCursor::CreateSystemCursor(jobject jCursor)
winCursor = IDC_SIZEWE; winCursor = IDC_SIZEWE;
break; break;
case java_awt_Cursor_HAND_CURSOR: case java_awt_Cursor_HAND_CURSOR:
winCursor = TEXT("HAND_CURSOR"); winCursor = IDC_HAND;
break; break;
case java_awt_Cursor_MOVE_CURSOR: case java_awt_Cursor_MOVE_CURSOR:
winCursor = IDC_SIZEALL; winCursor = IDC_SIZEALL;

Binary file not shown.

Before

(image error) Size: 326 B

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -157,7 +157,7 @@ public class Oid {
return (true); return (true);
if (other instanceof Oid) if (other instanceof Oid)
return this.oid.equals((Object)((Oid) other).oid); return this.oid.equals(((Oid) other).oid);
else if (other instanceof ObjectIdentifier) else if (other instanceof ObjectIdentifier)
return this.oid.equals(other); return this.oid.equals(other);
else else

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2009, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -252,7 +252,7 @@ public class GSSContextImpl implements GSSContext {
} else { } else {
// parse GSS header // parse GSS header
gssHeader = new GSSHeader(inStream); gssHeader = new GSSHeader(inStream);
if (!gssHeader.getOid().equals((Object) objId)) if (!gssHeader.getOid().equals(objId))
throw new GSSExceptionImpl throw new GSSExceptionImpl
(GSSException.DEFECTIVE_TOKEN, (GSSException.DEFECTIVE_TOKEN,
"Mechanism not equal to " + "Mechanism not equal to " +
@ -346,7 +346,7 @@ public class GSSContextImpl implements GSSContext {
} else { } else {
// parse GSS Header // parse GSS Header
gssHeader = new GSSHeader(inStream); gssHeader = new GSSHeader(inStream);
if (!gssHeader.getOid().equals((Object) objId)) if (!gssHeader.getOid().equals(objId))
throw new GSSExceptionImpl throw new GSSExceptionImpl
(GSSException.DEFECTIVE_TOKEN, (GSSException.DEFECTIVE_TOKEN,
"Mechanism not equal to " + "Mechanism not equal to " +

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -182,7 +182,7 @@ abstract class MessageToken extends Krb5Token {
try { try {
gssHeader = new GSSHeader(is); gssHeader = new GSSHeader(is);
if (!gssHeader.getOid().equals((Object)OID)) { if (!gssHeader.getOid().equals(OID)) {
throw new GSSException(GSSException.DEFECTIVE_TOKEN, -1, throw new GSSException(GSSException.DEFECTIVE_TOKEN, -1,
getTokenName(tokenId)); getTokenName(tokenId));
} }

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -25,11 +25,17 @@
package java.sql; package java.sql;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.ServiceLoader; import java.util.ServiceLoader;
import java.security.AccessController; import java.security.AccessController;
import java.security.PrivilegedAction; import java.security.PrivilegedAction;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Stream;
import sun.reflect.CallerSensitive; import sun.reflect.CallerSensitive;
import sun.reflect.Reflection; import sun.reflect.Reflection;
@ -429,29 +435,44 @@ public class DriverManager {
* <CODE>d.getClass().getName()</CODE> * <CODE>d.getClass().getName()</CODE>
* *
* @return the list of JDBC Drivers loaded by the caller's class loader * @return the list of JDBC Drivers loaded by the caller's class loader
* @see #drivers()
*/ */
@CallerSensitive @CallerSensitive
public static java.util.Enumeration<Driver> getDrivers() { public static Enumeration<Driver> getDrivers() {
java.util.Vector<Driver> result = new java.util.Vector<>();
ensureDriversInitialized(); ensureDriversInitialized();
Class<?> callerClass = Reflection.getCallerClass(); return Collections.enumeration(getDrivers(Reflection.getCallerClass()));
}
/**
* Retrieves a Stream with all of the currently loaded JDBC drivers
* to which the current caller has access.
*
* @return the stream of JDBC Drivers loaded by the caller's class loader
* @since 1.9
*/
@CallerSensitive
public static Stream<Driver> drivers() {
ensureDriversInitialized();
return getDrivers(Reflection.getCallerClass()).stream();
}
private static List<Driver> getDrivers(Class<?> callerClass) {
List<Driver> result = new ArrayList<>();
// Walk through the loaded registeredDrivers. // Walk through the loaded registeredDrivers.
for (DriverInfo aDriver : registeredDrivers) { for (DriverInfo aDriver : registeredDrivers) {
// If the caller does not have permission to load the driver then // If the caller does not have permission to load the driver then
// skip it. // skip it.
if (isDriverAllowed(aDriver.driver, callerClass)) { if (isDriverAllowed(aDriver.driver, callerClass)) {
result.addElement(aDriver.driver); result.add(aDriver.driver);
} else { } else {
println(" skipping: " + aDriver.getClass().getName()); println(" skipping: " + aDriver.getClass().getName());
} }
} }
return (result.elements()); return result;
} }
/** /**
* Sets the maximum time in seconds that a driver will wait * Sets the maximum time in seconds that a driver will wait
* while attempting to connect to a database once the driver has * while attempting to connect to a database once the driver has

@ -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 <jni.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h>
#include <windows.h> #include <windows.h>
#include <BaseTsd.h> #include <BaseTsd.h>
#include <wincrypt.h> #include <wincrypt.h>
@ -58,11 +59,16 @@ void ThrowException(JNIEnv *env, char *exceptionName, DWORD dwError)
char szMessage[1024]; char szMessage[1024];
szMessage[0] = '\0'; szMessage[0] = '\0';
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError, NULL, szMessage, DWORD res = FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM, NULL, dwError,
1024, NULL); NULL, szMessage, sizeof(szMessage), NULL);
if (res == 0) {
strcpy(szMessage, "Unknown error");
}
jclass exceptionClazz = env->FindClass(exceptionName); jclass exceptionClazz = env->FindClass(exceptionName);
env->ThrowNew(exceptionClazz, szMessage); if (exceptionClazz != NULL) {
env->ThrowNew(exceptionClazz, szMessage);
}
} }
@ -295,22 +301,42 @@ JNIEXPORT void JNICALL Java_sun_security_mscapi_KeyStore_loadKeysOrCertificateCh
// Determine clazz and method ID to generate certificate // Determine clazz and method ID to generate certificate
jclass clazzArrayList = env->FindClass("java/util/ArrayList"); jclass clazzArrayList = env->FindClass("java/util/ArrayList");
if (clazzArrayList == NULL) {
__leave;
}
jmethodID mNewArrayList = env->GetMethodID(clazzArrayList, "<init>", "()V"); jmethodID mNewArrayList = env->GetMethodID(clazzArrayList, "<init>", "()V");
if (mNewArrayList == NULL) {
__leave;
}
jmethodID mGenCert = env->GetMethodID(env->GetObjectClass(obj), jclass clazzOfThis = env->GetObjectClass(obj);
if (clazzOfThis == NULL) {
__leave;
}
jmethodID mGenCert = env->GetMethodID(clazzOfThis,
"generateCertificate", "generateCertificate",
"([BLjava/util/Collection;)V"); "([BLjava/util/Collection;)V");
if (mGenCert == NULL) {
__leave;
}
// Determine method ID to generate certificate chain // Determine method ID to generate certificate chain
jmethodID mGenCertChain = env->GetMethodID(env->GetObjectClass(obj), jmethodID mGenCertChain = env->GetMethodID(clazzOfThis,
"generateCertificateChain", "generateCertificateChain",
"(Ljava/lang/String;Ljava/util/Collection;Ljava/util/Collection;)V"); "(Ljava/lang/String;Ljava/util/Collection;Ljava/util/Collection;)V");
if (mGenCertChain == NULL) {
__leave;
}
// Determine method ID to generate RSA certificate chain // Determine method ID to generate RSA certificate chain
jmethodID mGenRSAKeyAndCertChain = env->GetMethodID(env->GetObjectClass(obj), jmethodID mGenRSAKeyAndCertChain = env->GetMethodID(clazzOfThis,
"generateRSAKeyAndCertificateChain", "generateRSAKeyAndCertificateChain",
"(Ljava/lang/String;JJILjava/util/Collection;Ljava/util/Collection;)V"); "(Ljava/lang/String;JJILjava/util/Collection;Ljava/util/Collection;)V");
if (mGenRSAKeyAndCertChain == NULL) {
__leave;
}
// Use CertEnumCertificatesInStore to get the certificates // Use CertEnumCertificatesInStore to get the certificates
// from the open store. pCertContext must be reset to // from the open store. pCertContext must be reset to
@ -590,9 +616,6 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_RSASignature_signHash
} }
__finally __finally
{ {
if (hCryptProvAlt)
::CryptReleaseContext(hCryptProvAlt, 0);
if (pSignedHashBuffer) if (pSignedHashBuffer)
delete [] pSignedHashBuffer; delete [] pSignedHashBuffer;
@ -601,6 +624,9 @@ JNIEXPORT jbyteArray JNICALL Java_sun_security_mscapi_RSASignature_signHash
if (hHash) if (hHash)
::CryptDestroyHash(hHash); ::CryptDestroyHash(hHash);
if (hCryptProvAlt)
::CryptReleaseContext(hCryptProvAlt, 0);
} }
return jSignedHash; return jSignedHash;
@ -688,9 +714,6 @@ JNIEXPORT jboolean JNICALL Java_sun_security_mscapi_RSASignature_verifySignedHas
__finally __finally
{ {
if (hCryptProvAlt)
::CryptReleaseContext(hCryptProvAlt, 0);
if (pSignedHashBuffer) if (pSignedHashBuffer)
delete [] pSignedHashBuffer; delete [] pSignedHashBuffer;
@ -699,6 +722,9 @@ JNIEXPORT jboolean JNICALL Java_sun_security_mscapi_RSASignature_verifySignedHas
if (hHash) if (hHash)
::CryptDestroyHash(hHash); ::CryptDestroyHash(hHash);
if (hCryptProvAlt)
::CryptReleaseContext(hCryptProvAlt, 0);
} }
return result; return result;
@ -763,9 +789,15 @@ JNIEXPORT jobject JNICALL Java_sun_security_mscapi_RSAKeyPairGenerator_generateR
// Get the method ID for the RSAKeyPair constructor // Get the method ID for the RSAKeyPair constructor
jclass clazzRSAKeyPair = jclass clazzRSAKeyPair =
env->FindClass("sun/security/mscapi/RSAKeyPair"); env->FindClass("sun/security/mscapi/RSAKeyPair");
if (clazzRSAKeyPair == NULL) {
__leave;
}
jmethodID mNewRSAKeyPair = jmethodID mNewRSAKeyPair =
env->GetMethodID(clazzRSAKeyPair, "<init>", "(JJI)V"); env->GetMethodID(clazzRSAKeyPair, "<init>", "(JJI)V");
if (mNewRSAKeyPair == NULL) {
__leave;
}
// Create a new RSA keypair // Create a new RSA keypair
keypair = env->NewObject(clazzRSAKeyPair, mNewRSAKeyPair, keypair = env->NewObject(clazzRSAKeyPair, mNewRSAKeyPair,
@ -1948,9 +1980,15 @@ JNIEXPORT jobject JNICALL Java_sun_security_mscapi_KeyStore_storePrivateKey
// Get the method ID for the RSAPrivateKey constructor // Get the method ID for the RSAPrivateKey constructor
jclass clazzRSAPrivateKey = jclass clazzRSAPrivateKey =
env->FindClass("sun/security/mscapi/RSAPrivateKey"); env->FindClass("sun/security/mscapi/RSAPrivateKey");
if (clazzRSAPrivateKey == NULL) {
__leave;
}
jmethodID mNewRSAPrivateKey = jmethodID mNewRSAPrivateKey =
env->GetMethodID(clazzRSAPrivateKey, "<init>", "(JJI)V"); env->GetMethodID(clazzRSAPrivateKey, "<init>", "(JJI)V");
if (mNewRSAPrivateKey == NULL) {
__leave;
}
// Create a new RSA private key // Create a new RSA private key
privateKey = env->NewObject(clazzRSAPrivateKey, mNewRSAPrivateKey, privateKey = env->NewObject(clazzRSAPrivateKey, mNewRSAPrivateKey,
@ -2035,9 +2073,15 @@ JNIEXPORT jobject JNICALL Java_sun_security_mscapi_RSASignature_importPublicKey
// Get the method ID for the RSAPublicKey constructor // Get the method ID for the RSAPublicKey constructor
jclass clazzRSAPublicKey = jclass clazzRSAPublicKey =
env->FindClass("sun/security/mscapi/RSAPublicKey"); env->FindClass("sun/security/mscapi/RSAPublicKey");
if (clazzRSAPublicKey == NULL) {
__leave;
}
jmethodID mNewRSAPublicKey = jmethodID mNewRSAPublicKey =
env->GetMethodID(clazzRSAPublicKey, "<init>", "(JJI)V"); env->GetMethodID(clazzRSAPublicKey, "<init>", "(JJI)V");
if (mNewRSAPublicKey == NULL) {
__leave;
}
// Create a new RSA public key // Create a new RSA public key
publicKey = env->NewObject(clazzRSAPublicKey, mNewRSAPublicKey, publicKey = env->NewObject(clazzRSAPublicKey, mNewRSAPublicKey,

@ -169,7 +169,7 @@ public final class TimestampedSigner extends ContentSigner {
for (int i = 0; i < derValue.length; i++) { for (int i = 0; i < derValue.length; i++) {
description = new AccessDescription(derValue[i]); description = new AccessDescription(derValue[i]);
if (description.getAccessMethod() if (description.getAccessMethod()
.equals((Object)AD_TIMESTAMPING_Id)) { .equals(AD_TIMESTAMPING_Id)) {
location = description.getAccessLocation(); location = description.getAccessLocation();
if (location.getType() == GeneralNameInterface.NAME_URI) { if (location.getType() == GeneralNameInterface.NAME_URI) {
uri = (URIName) location.getName(); uri = (URIName) location.getName();

@ -116,6 +116,12 @@
# jdk_beans # jdk_beans
# 8060027
java/beans/XMLEncoder/Test4903007.java generic-all
java/beans/XMLEncoder/java_awt_GridBagLayout.java generic-all
java/beans/XMLDecoder/8028054/TestConstructorFinder.java generic-all
java/beans/XMLDecoder/8028054/TestMethodFinder.java generic-all
############################################################################ ############################################################################
# jdk_lang # jdk_lang
@ -221,9 +227,6 @@ sun/security/pkcs11/ec/TestKeyFactory.java generic-all
# 7164518: no PortUnreachableException on Mac # 7164518: no PortUnreachableException on Mac
sun/security/krb5/auto/Unreachable.java macosx-all sun/security/krb5/auto/Unreachable.java macosx-all
# 8058849
sun/security/krb5/config/dns.sh generic-all
# 7041639: Solaris DSA keypair generation bug # 7041639: Solaris DSA keypair generation bug
java/security/KeyPairGenerator/SolarisShortDSA.java solaris-all java/security/KeyPairGenerator/SolarisShortDSA.java solaris-all
sun/security/tools/keytool/standard.sh solaris-all sun/security/tools/keytool/standard.sh solaris-all
@ -292,10 +295,16 @@ sun/security/pkcs11/tls/TestMasterSecret.java windows-all
sun/security/pkcs11/tls/TestPRF.java windows-all sun/security/pkcs11/tls/TestPRF.java windows-all
sun/security/pkcs11/tls/TestPremaster.java windows-all sun/security/pkcs11/tls/TestPremaster.java windows-all
# 8051770
sun/security/provider/SecureRandom/StrongSecureRandom.java macosx-10.10
############################################################################ ############################################################################
# jdk_sound # jdk_sound
# 8059743
javax/sound/midi/Gervill/SoftProvider/GetDevice.java generic-all
############################################################################ ############################################################################
# jdk_swing # jdk_swing

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -26,6 +26,7 @@
* @bug 8007267 * @bug 8007267
* @summary [macosx] com.apple.eawt.Application.setDefaultMenuBar is not working * @summary [macosx] com.apple.eawt.Application.setDefaultMenuBar is not working
* @author leonid.romanov@oracle.com * @author leonid.romanov@oracle.com
* @modules java.desktop/sun.awt
* @run main DefaultMenuBarTest * @run main DefaultMenuBarTest
*/ */

@ -0,0 +1,2 @@
modules=java.desktop

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2009, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -27,6 +27,8 @@
@summary The size returned by SecurityWarning.getSize() should not be zero @summary The size returned by SecurityWarning.getSize() should not be zero
@author anthony.petrov@sun.com: area=awt.toplevel @author anthony.petrov@sun.com: area=awt.toplevel
@library ../../../../java/awt/regtesthelpers @library ../../../../java/awt/regtesthelpers
@modules java.desktop/com.sun.awt
java.desktop/sun.awt
@build Util CustomSecurityManager CopyClassFile @build Util CustomSecurityManager CopyClassFile
@run main CopyClassFile CustomSecurityManager bootcp/ @run main CopyClassFile CustomSecurityManager bootcp/
@run main/othervm/secure=CustomSecurityManager -Xbootclasspath/a:bootcp GetSizeShouldNotReturnZero @run main/othervm/secure=CustomSecurityManager -Xbootclasspath/a:bootcp GetSizeShouldNotReturnZero

@ -0,0 +1,2 @@
modules=java.desktop

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -26,6 +26,7 @@
@bug 6594131 @bug 6594131
@summary Tests the AWTUtilities.get/setWindowOpacity() methods @summary Tests the AWTUtilities.get/setWindowOpacity() methods
@author anthony.petrov@...: area=awt.toplevel @author anthony.petrov@...: area=awt.toplevel
@modules java.desktop/com.sun.awt
@run main WindowOpacity @run main WindowOpacity
*/ */

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -34,7 +34,6 @@ import java.security.spec.*;
import javax.crypto.*; import javax.crypto.*;
import javax.crypto.spec.*; import javax.crypto.spec.*;
import java.security.Provider; import java.security.Provider;
import com.sun.crypto.provider.*;
public class Test4511676 { public class Test4511676 {
private static final String ALGO = "AES"; private static final String ALGO = "AES";
@ -59,7 +58,6 @@ public class Test4511676 {
} }
public static void main (String[] args) throws Exception { public static void main (String[] args) throws Exception {
Security.addProvider(new com.sun.crypto.provider.SunJCE());
Test4511676 test = new Test4511676(); Test4511676 test = new Test4511676();
String testName = test.getClass().getName() + "[" + ALGO + String testName = test.getClass().getName() + "[" + ALGO +

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -35,7 +35,6 @@ import java.util.Random;
import javax.crypto.*; import javax.crypto.*;
import javax.crypto.spec.*; import javax.crypto.spec.*;
import java.security.Provider; import java.security.Provider;
import com.sun.crypto.provider.*;
public class Test4512524 { public class Test4512524 {
@ -65,8 +64,6 @@ public class Test4512524 {
} }
public static void main (String[] args) throws Exception { public static void main (String[] args) throws Exception {
Security.addProvider(new com.sun.crypto.provider.SunJCE());
Test4512524 test = new Test4512524(); Test4512524 test = new Test4512524();
test.execute("CBC"); test.execute("CBC");
test.execute("GCM"); test.execute("GCM");

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -35,7 +35,6 @@ import java.util.Random;
import javax.crypto.*; import javax.crypto.*;
import javax.crypto.spec.*; import javax.crypto.spec.*;
import java.security.Provider; import java.security.Provider;
import com.sun.crypto.provider.*;
public class Test4512704 { public class Test4512704 {
private static final String ALGO = "AES"; private static final String ALGO = "AES";
@ -61,8 +60,6 @@ public class Test4512704 {
} }
public static void main (String[] args) throws Exception { public static void main (String[] args) throws Exception {
Security.addProvider(new com.sun.crypto.provider.SunJCE());
Test4512704 test = new Test4512704(); Test4512704 test = new Test4512704();
test.execute("CBC"); test.execute("CBC");
test.execute("GCM"); test.execute("GCM");

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2002, 2007, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -85,8 +85,6 @@ public class Test4513830 {
} }
public static void main (String[] args) throws Exception { public static void main (String[] args) throws Exception {
Security.addProvider(new com.sun.crypto.provider.SunJCE());
Test4513830 test = new Test4513830(); Test4513830 test = new Test4513830();
String testName = test.getClass().getName() + "[" + ALGO + String testName = test.getClass().getName() + "[" + ALGO +
"/" + MODE + "/" + PADDING + "]"; "/" + MODE + "/" + PADDING + "]";

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -37,7 +37,6 @@ import java.util.*;
import javax.crypto.*; import javax.crypto.*;
import javax.crypto.spec.*; import javax.crypto.spec.*;
import java.security.Provider; import java.security.Provider;
import com.sun.crypto.provider.*;
public class Test4517355 { public class Test4517355 {
@ -93,8 +92,6 @@ public class Test4517355 {
} }
public static void main (String[] args) throws Exception { public static void main (String[] args) throws Exception {
Security.addProvider(new com.sun.crypto.provider.SunJCE());
Test4517355 test = new Test4517355(); Test4517355 test = new Test4517355();
Random rdm = new Random(); Random rdm = new Random();
rdm.nextBytes(test.plainText); rdm.nextBytes(test.plainText);

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -60,8 +60,6 @@ public class Test4626070 {
} }
public static void main (String[] args) throws Exception { public static void main (String[] args) throws Exception {
Security.addProvider(new com.sun.crypto.provider.SunJCE());
Test4626070 test = new Test4626070(); Test4626070 test = new Test4626070();
test.execute("CBC", "PKCS5Padding"); test.execute("CBC", "PKCS5Padding");
test.execute("GCM", "NoPadding"); test.execute("GCM", "NoPadding");

Some files were not shown because too many files have changed in this diff Show More