author | ddehaven |
Tue, 06 Oct 2015 12:51:55 -0700 | |
changeset 33252 | 42e650891c6c |
parent 33251 | 938892557272 (current diff) |
parent 32879 | 7b999f099d87 (diff) |
child 33253 | 78e735319356 |
--- a/jdk/.hgtags Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/.hgtags Tue Oct 06 12:51:55 2015 -0700 @@ -326,3 +326,4 @@ fdc13a2d32867ca3c57b7fa2620c6b59c83168cb jdk9-b81 b10b64263b563e21f055c881444f625ec618b826 jdk9-b82 d11f25ce3c545823f53bb978d454a4d2901abac3 jdk9-b83 +757ef7f6d0042934edea3e0bf616fad2c1a22789 jdk9-b84
--- a/jdk/make/data/tzdata/VERSION Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/make/data/tzdata/VERSION Tue Oct 06 12:51:55 2015 -0700 @@ -21,4 +21,4 @@ # or visit www.oracle.com if you need additional information or have any # questions. # -tzdata2015f +tzdata2015g
--- a/jdk/make/data/tzdata/asia Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/make/data/tzdata/asia Tue Oct 06 12:51:55 2015 -0700 @@ -154,7 +154,8 @@ # Azerbaijan # From Rustam Aliyev of the Azerbaijan Internet Forum (2005-10-23): # According to the resolution of Cabinet of Ministers, 1997 -# Resolution available at: http://aif.az/docs/daylight_res.pdf +# From Paul Eggert (2015-09-17): It was Resolution No. 21 (1997-03-17). +# http://code.az/files/daylight_res.pdf # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Azer 1997 max - Mar lastSun 4:00 1:00 S Rule Azer 1997 max - Oct lastSun 5:00 0 - @@ -1740,11 +1741,12 @@ # the 8:30 time zone on August 15, one example: # http://www.bbc.com/news/world-asia-33815049 # -# From Paul Eggert (2015-08-07): -# No transition time is specified; assume 00:00. +# From Paul Eggert (2015-08-15): +# Bells rang out midnight (00:00) Friday as part of the celebrations. See: +# Talmadge E. North Korea celebrates new time zone, 'Pyongyang Time' +# http://news.yahoo.com/north-korea-celebrates-time-zone-pyongyang-time-164038128.html # There is no common English-language abbreviation for this time zone. -# Use %z rather than invent one. We can't assume %z works everywhere yet, -# so for now substitute its output manually. +# Use KST, as that's what we already use for 1954-1961 in ROK. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Seoul 8:27:52 - LMT 1908 Apr 1 @@ -1758,7 +1760,7 @@ 8:30 - KST 1912 Jan 1 9:00 - JCST 1937 Oct 1 9:00 - JST 1945 Aug 24 - 9:00 - KST 2015 Aug 15 + 9:00 - KST 2015 Aug 15 00:00 8:30 - KST ###############################################################################
--- a/jdk/make/data/tzdata/australasia Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/make/data/tzdata/australasia Tue Oct 06 12:51:55 2015 -0700 @@ -358,10 +358,17 @@ # DST will start Nov. 2 this year. # http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVING-STARTS-ON-SUNDAY,-NOVEMBER-2ND.aspx -# From Paul Eggert (2014-10-20): +# From a government order dated 2015-08-26 and published as Legal Notice No. 77 +# in the Government of Fiji Gazette Supplement No. 24 (2015-08-28), +# via Ken Rylander (2015-09-02): +# the daylight saving period is 1 hour in advance of the standard time +# commencing at 2.00 am on Sunday 1st November, 2015 and ending at +# 3.00 am on Sunday 17th January, 2016. + +# From Paul Eggert (2015-09-01): # For now, guess DST from 02:00 the first Sunday in November to -# 03:00 the first Sunday on or after January 18. Although ad hoc, it -# matches this year's plan and seems more likely to match future +# 03:00 the third Sunday in January. Although ad hoc, it matches +# transitions since late 2014 and seems more likely to match future # practice than guessing no DST. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S @@ -374,7 +381,7 @@ Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 - Rule Fiji 2014 only - Jan Sun>=18 2:00 0 - Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 S -Rule Fiji 2015 max - Jan Sun>=18 3:00 0 - +Rule Fiji 2015 max - Jan Sun>=15 3:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva 12:00 Fiji FJ%sT # Fiji Time @@ -533,7 +540,10 @@ # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Norfolk 11:11:52 - LMT 1901 # Kingston 11:12 - NMT 1951 # Norfolk Mean Time - 11:30 - NFT # Norfolk Time + 11:30 - NFT 1974 Oct 27 02:00 # Norfolk T. + 11:30 1:00 NFST 1975 Mar 2 02:00 + 11:30 - NFT 2015 Oct 4 02:00 + 11:00 - NFT # Palau (Belau) # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -1573,6 +1583,20 @@ # started DST on June 3. Possibly DST was observed other years # in Midway, but we have no record of it. +# Norfolk + +# From Alexander Krivenyshev (2015-09-23): +# Norfolk Island will change ... from +1130 to +1100: +# https://www.comlaw.gov.au/Details/F2015L01483/Explanatory%20Statement/Text +# ... at 12.30 am (by legal time in New South Wales) on 4 October 2015. +# http://www.norfolkisland.gov.nf/nia/MediaRelease/Media%20Release%20Norfolk%20Island%20Standard%20Time%20Change.pdf + +# From Paul Eggert (2015-09-23): +# Transitions before 2015 are from timeanddate.com, which consulted +# the Norfolk Island Museum and the Australian Bureau of Meteorology's +# Norfolk Island station, and found no record of Norfolk observing DST +# other than in 1974/5. See: +# http://www.timeanddate.com/time/australia/norfolk-island.html # Pitcairn
--- a/jdk/make/data/tzdata/europe Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/make/data/tzdata/europe Tue Oct 06 12:51:55 2015 -0700 @@ -3173,6 +3173,11 @@ # http://www.balkaneu.com/eventful-elections-turkey/ 2014-03-30. # I guess the best we can do is document the official time. +# From Fatih (2015-09-29): +# It's officially announced now by the Ministry of Energy. +# Turkey delays winter time to 8th of November 04:00 +# http://www.aa.com.tr/tr/turkiye/yaz-saati-uygulamasi-8-kasimda-sona-erecek/362217 + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Turkey 1916 only - May 1 0:00 1:00 S Rule Turkey 1916 only - Oct 1 0:00 0 - @@ -3242,6 +3247,8 @@ 2:00 - EET 2011 Mar 28 1:00u 2:00 EU EE%sT 2014 Mar 30 1:00u 2:00 - EET 2014 Mar 31 1:00u + 2:00 EU EE%sT 2015 Oct 25 1:00u + 2:00 1:00 EEST 2015 Nov 8 1:00u 2:00 EU EE%sT Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents.
--- a/jdk/make/data/tzdata/northamerica Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/make/data/tzdata/northamerica Tue Oct 06 12:51:55 2015 -0700 @@ -1849,6 +1849,22 @@ # The transition dates (and times) are guesses. +# From Matt Johnson (2015-09-21): +# Fort Nelson, BC, Canada will cancel DST this year. So while previously they +# were aligned with America/Vancouver, they're now aligned with +# America/Dawson_Creek. +# http://www.northernrockies.ca/EN/meta/news/archives/2015/northern-rockies-time-change.html +# +# From Tim Parenti (2015-09-23): +# This requires a new zone for the Northern Rockies Regional Municipality, +# America/Fort_Nelson. The resolution of 2014-12-08 was reached following a +# 2014-11-15 poll with nearly 75% support. Effectively, the municipality has +# been on MST (-0700) like Dawson Creek since it advanced its clocks on +# 2015-03-08. +# +# From Paul Eggert (2015-09-23): +# Shanks says Fort Nelson did not observe DST in 1946, unlike Vancouver. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Vanc 1918 only - Apr 14 2:00 1:00 D Rule Vanc 1918 only - Oct 27 2:00 0 S @@ -1867,6 +1883,12 @@ -8:00 Canada P%sT 1947 -8:00 Vanc P%sT 1972 Aug 30 2:00 -7:00 - MST +Zone America/Fort_Nelson -8:10:47 - LMT 1884 + -8:00 Vanc P%sT 1946 + -8:00 - PST 1947 + -8:00 Vanc P%sT 1987 + -8:00 Canada P%sT 2015 Mar 8 2:00 + -7:00 - MST Zone America/Creston -7:46:04 - LMT 1884 -7:00 - MST 1916 Oct 1 -8:00 - PST 1918 Jun 2
--- a/jdk/make/data/tzdata/zone.tab Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/make/data/tzdata/zone.tab Tue Oct 06 12:51:55 2015 -0700 @@ -152,6 +152,7 @@ CA +682059-1334300 America/Inuvik Mountain Time - west Northwest Territories CA +4906-11631 America/Creston Mountain Standard Time - Creston, British Columbia CA +5946-12014 America/Dawson_Creek Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia +CA +5848-12242 America/Fort_Nelson Mountain Standard Time - Fort Nelson, British Columbia CA +4916-12307 America/Vancouver Pacific Time - west British Columbia CA +6043-13503 America/Whitehorse Pacific Time - south Yukon CA +6404-13925 America/Dawson Pacific Time - north Yukon
--- a/jdk/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/make/launcher/Launcher-jdk.scripting.nashorn.shell.gmk Tue Oct 06 12:51:55 2015 -0700 @@ -26,5 +26,6 @@ include LauncherCommon.gmk $(eval $(call SetupLauncher,jjs, \ + -DENABLE_ARG_FILES \ -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "jdk.nashorn.tools.jjs.Main"$(COMMA) }'))
--- a/jdk/make/lib/CoreLibraries.gmk Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/make/lib/CoreLibraries.gmk Tue Oct 06 12:51:55 2015 -0700 @@ -160,6 +160,7 @@ -framework Security -framework SystemConfiguration, \ LDFLAGS_SUFFIX_windows := -export:winFileHandleOpen -export:handleLseek \ -export:getLastErrorString \ + -export:getErrorString \ jvm.lib $(BUILD_LIBFDLIBM) $(WIN_VERIFY_LIB) \ shell32.lib delayimp.lib -DELAYLOAD:shell32.dll \ advapi32.lib version.lib, \
--- a/jdk/make/mapfiles/libjava/mapfile-vers Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/make/mapfiles/libjava/mapfile-vers Tue Oct 06 12:51:55 2015 -0700 @@ -282,8 +282,9 @@ # ZipFile.c needs this one throwFileNotFoundException; - # zip_util.c needs this one + # zip_util.c needs these getLastErrorString; + getErrorString; # Outcalls from libjvm done using dlsym().
--- a/jdk/make/rmic/RmicCommon.gmk Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/make/rmic/RmicCommon.gmk Tue Oct 06 12:51:55 2015 -0700 @@ -33,7 +33,7 @@ BTRMIC_CP := $(call PathList, \ $(BUILDTOOLS_OUTPUTDIR)/interim_rmic_classes $(INTERIM_LANGTOOLS_JAR)) -BTRMIC_ARGS := -Xbootclasspath/p:$(BTRMIC_CP) -cp $(BTRMIC_CP) +BTRMIC_ARGS := -cp $(BTRMIC_CP) RMIC := $(JAVA) $(BTRMIC_ARGS) sun.rmi.rmic.Main CLASSES_DIR := $(JDK_OUTPUTDIR)/modules
--- a/jdk/src/java.base/linux/classes/sun/nio/ch/EPollSelectorImpl.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/linux/classes/sun/nio/ch/EPollSelectorImpl.java Tue Oct 06 12:51:55 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 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 @@ -65,9 +65,23 @@ long pipeFds = IOUtil.makePipe(false); fd0 = (int) (pipeFds >>> 32); fd1 = (int) pipeFds; - pollWrapper = new EPollArrayWrapper(); - pollWrapper.initInterrupt(fd0, fd1); - fdToKey = new HashMap<>(); + try { + pollWrapper = new EPollArrayWrapper(); + pollWrapper.initInterrupt(fd0, fd1); + fdToKey = new HashMap<>(); + } catch (Throwable t) { + try { + FileDispatcherImpl.closeIntFD(fd0); + } catch (IOException ioe0) { + t.addSuppressed(ioe0); + } + try { + FileDispatcherImpl.closeIntFD(fd1); + } catch (IOException ioe1) { + t.addSuppressed(ioe1); + } + throw t; + } } protected int doSelect(long timeout) throws IOException {
--- a/jdk/src/java.base/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/macosx/classes/sun/nio/ch/KQueueSelectorImpl.java Tue Oct 06 12:51:55 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -84,10 +84,24 @@ long fds = IOUtil.makePipe(false); fd0 = (int)(fds >>> 32); fd1 = (int)fds; - kqueueWrapper = new KQueueArrayWrapper(); - kqueueWrapper.initInterrupt(fd0, fd1); - fdMap = new HashMap<>(); - totalChannels = 1; + try { + kqueueWrapper = new KQueueArrayWrapper(); + kqueueWrapper.initInterrupt(fd0, fd1); + fdMap = new HashMap<>(); + totalChannels = 1; + } catch (Throwable t) { + try { + FileDispatcherImpl.closeIntFD(fd0); + } catch (IOException ioe0) { + t.addSuppressed(ioe0); + } + try { + FileDispatcherImpl.closeIntFD(fd1); + } catch (IOException ioe1) { + t.addSuppressed(ioe1); + } + throw t; + } }
--- a/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/PackerImpl.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/PackerImpl.java Tue Oct 06 12:51:55 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,6 +34,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.time.ZoneOffset; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -41,7 +42,6 @@ import java.util.ListIterator; import java.util.Map; import java.util.SortedMap; -import java.util.TimeZone; import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.jar.JarInputStream; @@ -84,13 +84,8 @@ */ public synchronized void pack(JarFile in, OutputStream out) throws IOException { assert(Utils.currentInstance.get() == null); - TimeZone tz = (props.getBoolean(Utils.PACK_DEFAULT_TIMEZONE)) - ? null - : TimeZone.getDefault(); try { Utils.currentInstance.set(this); - if (tz != null) TimeZone.setDefault(TimeZone.getTimeZone("UTC")); - if ("0".equals(props.getProperty(Pack200.Packer.EFFORT))) { Utils.copyJarFile(in, out); } else { @@ -98,7 +93,6 @@ } } finally { Utils.currentInstance.set(null); - if (tz != null) TimeZone.setDefault(tz); in.close(); } } @@ -119,11 +113,8 @@ */ public synchronized void pack(JarInputStream in, OutputStream out) throws IOException { assert(Utils.currentInstance.get() == null); - TimeZone tz = (props.getBoolean(Utils.PACK_DEFAULT_TIMEZONE)) ? null : - TimeZone.getDefault(); try { Utils.currentInstance.set(this); - if (tz != null) TimeZone.setDefault(TimeZone.getTimeZone("UTC")); if ("0".equals(props.getProperty(Pack200.Packer.EFFORT))) { Utils.copyJarFile(in, out); } else { @@ -131,7 +122,6 @@ } } finally { Utils.currentInstance.set(null); - if (tz != null) TimeZone.setDefault(tz); in.close(); } } @@ -327,7 +317,9 @@ this.f = null; this.jf = jf; this.je = je; - int timeSecs = getModtime(je.getTime()); + int timeSecs = (int) je.getTimeLocal() + .atOffset(ZoneOffset.UTC) + .toEpochSecond(); if (keepModtime && timeSecs != Constants.NO_MODTIME) { this.modtime = timeSecs; } else if (latestModtime && timeSecs > pkg.default_modtime) {
--- a/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/PropMap.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/PropMap.java Tue Oct 06 12:51:55 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -69,10 +69,6 @@ props.put(Utils.DEBUG_VERBOSE, String.valueOf(Integer.getInteger(Utils.DEBUG_VERBOSE,0))); - // Set the PACK_TIMEZONE_NO_UTC - props.put(Utils.PACK_DEFAULT_TIMEZONE, - String.valueOf(Boolean.getBoolean(Utils.PACK_DEFAULT_TIMEZONE))); - // The segment size is unlimited props.put(Pack200.Packer.SEGMENT_LIMIT, "-1");
--- a/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/UnpackerImpl.java Tue Oct 06 12:51:55 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -32,10 +32,11 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.time.LocalDateTime; +import java.time.ZoneOffset; import java.util.HashSet; import java.util.Set; import java.util.SortedMap; -import java.util.TimeZone; import java.util.jar.JarEntry; import java.util.jar.JarInputStream; import java.util.jar.JarOutputStream; @@ -95,13 +96,9 @@ throw new NullPointerException("null output"); } assert(Utils.currentInstance.get() == null); - TimeZone tz = (props.getBoolean(Utils.PACK_DEFAULT_TIMEZONE)) - ? null - : TimeZone.getDefault(); try { Utils.currentInstance.set(this); - if (tz != null) TimeZone.setDefault(TimeZone.getTimeZone("UTC")); final int verbose = props.getInteger(Utils.DEBUG_VERBOSE); BufferedInputStream in0 = new BufferedInputStream(in); if (Utils.isJarMagic(Utils.readMagic(in0))) { @@ -125,7 +122,6 @@ } finally { _nunp = null; Utils.currentInstance.set(null); - if (tz != null) TimeZone.setDefault(tz); } } @@ -246,9 +242,9 @@ je.setCrc(crc.getValue()); } if (keepModtime) { - je.setTime(file.modtime); - // Convert back to milliseconds - je.setTime((long)file.modtime * 1000); + LocalDateTime ldt = LocalDateTime + .ofEpochSecond(file.modtime, 0, ZoneOffset.UTC); + je.setTimeLocal(ldt); } else { je.setTime((long)modtime * 1000); }
--- a/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/Utils.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/Utils.java Tue Oct 06 12:51:55 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -62,13 +62,6 @@ static final String DEBUG_DISABLE_NATIVE = COM_PREFIX+"disable.native"; /* - * Use the default working TimeZone instead of UTC. - * Note: This has installer unpacker implications. - * see: zip.cpp which uses gmtime vs. localtime. - */ - static final String PACK_DEFAULT_TIMEZONE = COM_PREFIX+"default.timezone"; - - /* * Property indicating that the unpacker should * ignore the transmitted PACK_MODIFICATION_TIME, * replacing it by the given value. The value can
--- a/jdk/src/java.base/share/classes/com/sun/security/ntlm/NTLM.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/com/sun/security/ntlm/NTLM.java Tue Oct 06 12:51:55 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 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 @@ -56,7 +56,9 @@ private final Mac hmac; private final MessageDigest md5; private static final boolean DEBUG = - System.getProperty("ntlm.debug") != null; + java.security.AccessController.doPrivileged( + new sun.security.action.GetBooleanAction("ntlm.debug")) + .booleanValue(); final Version v;
--- a/jdk/src/java.base/share/classes/java/lang/FdLibm.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/lang/FdLibm.java Tue Oct 06 12:51:55 2015 -0700 @@ -352,15 +352,15 @@ double p_h, p_l, t1, t2; // |y| is huge - if (y_abs > 0x1.0p31) { // if |y| > 2**31 + if (y_abs > 0x1.00000_ffff_ffffp31) { // if |y| > ~2**31 final double INV_LN2 = 0x1.7154_7652_b82fep0; // 1.44269504088896338700e+00 = 1/ln2 final double INV_LN2_H = 0x1.715476p0; // 1.44269502162933349609e+00 = 24 bits of 1/ln2 final double INV_LN2_L = 0x1.4ae0_bf85_ddf44p-26; // 1.92596299112661746887e-08 = 1/ln2 tail // Over/underflow if x is not close to one - if (x_abs < 0x1.fffffp-1) // |x| < 0.9999995231628418 + if (x_abs < 0x1.fffff_0000_0000p-1) // |x| < ~0.9999995231628418 return (y < 0.0) ? s * INFINITY : s * 0.0; - if (x_abs > 1.0) // |x| > 1.0 + if (x_abs > 0x1.00000_ffff_ffffp0) // |x| > ~1.0 return (y > 0.0) ? s * INFINITY : s * 0.0; /* * now |1-x| is tiny <= 2**-20, sufficient to compute
--- a/jdk/src/java.base/share/classes/java/text/SimpleDateFormat.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/text/SimpleDateFormat.java Tue Oct 06 12:51:55 2015 -0700 @@ -1722,7 +1722,7 @@ } return (start + zoneNames[nameIndex].length()); } - return 0; + return -start; } /**
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicBoolean.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicBoolean.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,7 +34,6 @@ */ package java.util.concurrent.atomic; -import sun.misc.Unsafe; /** * A {@code boolean} value that may be updated atomically. See the @@ -49,15 +48,17 @@ */ public class AtomicBoolean implements java.io.Serializable { private static final long serialVersionUID = 4654671469794556979L; - // setup to use Unsafe.compareAndSwapInt for updates - private static final Unsafe unsafe = Unsafe.getUnsafe(); - private static final long valueOffset; + + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); + private static final long VALUE; static { try { - valueOffset = unsafe.objectFieldOffset + VALUE = U.objectFieldOffset (AtomicBoolean.class.getDeclaredField("value")); - } catch (Exception ex) { throw new Error(ex); } + } catch (ReflectiveOperationException e) { + throw new Error(e); + } } private volatile int value; @@ -96,9 +97,9 @@ * the actual value was not equal to the expected value. */ public final boolean compareAndSet(boolean expect, boolean update) { - int e = expect ? 1 : 0; - int u = update ? 1 : 0; - return unsafe.compareAndSwapInt(this, valueOffset, e, u); + return U.compareAndSwapInt(this, VALUE, + (expect ? 1 : 0), + (update ? 1 : 0)); } /** @@ -114,9 +115,9 @@ * @return {@code true} if successful */ public boolean weakCompareAndSet(boolean expect, boolean update) { - int e = expect ? 1 : 0; - int u = update ? 1 : 0; - return unsafe.compareAndSwapInt(this, valueOffset, e, u); + return U.compareAndSwapInt(this, VALUE, + (expect ? 1 : 0), + (update ? 1 : 0)); } /** @@ -135,8 +136,7 @@ * @since 1.6 */ public final void lazySet(boolean newValue) { - int v = newValue ? 1 : 0; - unsafe.putOrderedInt(this, valueOffset, v); + U.putOrderedInt(this, VALUE, (newValue ? 1 : 0)); } /**
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicInteger.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicInteger.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,9 +34,9 @@ */ package java.util.concurrent.atomic; -import java.util.function.IntUnaryOperator; + import java.util.function.IntBinaryOperator; -import sun.misc.Unsafe; +import java.util.function.IntUnaryOperator; /** * An {@code int} value that may be updated atomically. See the @@ -50,19 +50,20 @@ * * @since 1.5 * @author Doug Lea -*/ + */ public class AtomicInteger extends Number implements java.io.Serializable { private static final long serialVersionUID = 6214790243416807050L; - // setup to use Unsafe.compareAndSwapInt for updates - private static final Unsafe unsafe = Unsafe.getUnsafe(); - private static final long valueOffset; + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); + private static final long VALUE; static { try { - valueOffset = unsafe.objectFieldOffset + VALUE = U.objectFieldOffset (AtomicInteger.class.getDeclaredField("value")); - } catch (Exception ex) { throw new Error(ex); } + } catch (ReflectiveOperationException e) { + throw new Error(e); + } } private volatile int value; @@ -107,7 +108,7 @@ * @since 1.6 */ public final void lazySet(int newValue) { - unsafe.putOrderedInt(this, valueOffset, newValue); + U.putOrderedInt(this, VALUE, newValue); } /** @@ -117,7 +118,7 @@ * @return the previous value */ public final int getAndSet(int newValue) { - return unsafe.getAndSetInt(this, valueOffset, newValue); + return U.getAndSetInt(this, VALUE, newValue); } /** @@ -130,7 +131,7 @@ * the actual value was not equal to the expected value. */ public final boolean compareAndSet(int expect, int update) { - return unsafe.compareAndSwapInt(this, valueOffset, expect, update); + return U.compareAndSwapInt(this, VALUE, expect, update); } /** @@ -146,7 +147,7 @@ * @return {@code true} if successful */ public final boolean weakCompareAndSet(int expect, int update) { - return unsafe.compareAndSwapInt(this, valueOffset, expect, update); + return U.compareAndSwapInt(this, VALUE, expect, update); } /** @@ -155,7 +156,7 @@ * @return the previous value */ public final int getAndIncrement() { - return unsafe.getAndAddInt(this, valueOffset, 1); + return U.getAndAddInt(this, VALUE, 1); } /** @@ -164,7 +165,7 @@ * @return the previous value */ public final int getAndDecrement() { - return unsafe.getAndAddInt(this, valueOffset, -1); + return U.getAndAddInt(this, VALUE, -1); } /** @@ -174,7 +175,7 @@ * @return the previous value */ public final int getAndAdd(int delta) { - return unsafe.getAndAddInt(this, valueOffset, delta); + return U.getAndAddInt(this, VALUE, delta); } /** @@ -183,7 +184,7 @@ * @return the updated value */ public final int incrementAndGet() { - return unsafe.getAndAddInt(this, valueOffset, 1) + 1; + return U.getAndAddInt(this, VALUE, 1) + 1; } /** @@ -192,7 +193,7 @@ * @return the updated value */ public final int decrementAndGet() { - return unsafe.getAndAddInt(this, valueOffset, -1) - 1; + return U.getAndAddInt(this, VALUE, -1) - 1; } /** @@ -202,7 +203,7 @@ * @return the updated value */ public final int addAndGet(int delta) { - return unsafe.getAndAddInt(this, valueOffset, delta) + delta; + return U.getAndAddInt(this, VALUE, delta) + delta; } /** @@ -301,6 +302,7 @@ /** * Returns the value of this {@code AtomicInteger} as an {@code int}. + * Equivalent to {@link #get()}. */ public int intValue() { return get();
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicIntegerArray.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,9 +34,9 @@ */ package java.util.concurrent.atomic; -import java.util.function.IntUnaryOperator; + import java.util.function.IntBinaryOperator; -import sun.misc.Unsafe; +import java.util.function.IntUnaryOperator; /** * An {@code int} array in which elements may be updated atomically. @@ -49,16 +49,17 @@ public class AtomicIntegerArray implements java.io.Serializable { private static final long serialVersionUID = 2862133569453604235L; - private static final Unsafe unsafe = Unsafe.getUnsafe(); - private static final int base = unsafe.arrayBaseOffset(int[].class); - private static final int shift; + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); + private static final int ABASE; + private static final int ASHIFT; private final int[] array; static { - int scale = unsafe.arrayIndexScale(int[].class); + ABASE = U.arrayBaseOffset(int[].class); + int scale = U.arrayIndexScale(int[].class); if ((scale & (scale - 1)) != 0) - throw new Error("data type scale not a power of two"); - shift = 31 - Integer.numberOfLeadingZeros(scale); + throw new Error("array index scale not a power of two"); + ASHIFT = 31 - Integer.numberOfLeadingZeros(scale); } private long checkedByteOffset(int i) { @@ -69,7 +70,7 @@ } private static long byteOffset(int i) { - return ((long) i << shift) + base; + return ((long) i << ASHIFT) + ABASE; } /** @@ -114,7 +115,7 @@ } private int getRaw(long offset) { - return unsafe.getIntVolatile(array, offset); + return U.getIntVolatile(array, offset); } /** @@ -124,7 +125,7 @@ * @param newValue the new value */ public final void set(int i, int newValue) { - unsafe.putIntVolatile(array, checkedByteOffset(i), newValue); + U.putIntVolatile(array, checkedByteOffset(i), newValue); } /** @@ -135,7 +136,7 @@ * @since 1.6 */ public final void lazySet(int i, int newValue) { - unsafe.putOrderedInt(array, checkedByteOffset(i), newValue); + U.putOrderedInt(array, checkedByteOffset(i), newValue); } /** @@ -147,7 +148,7 @@ * @return the previous value */ public final int getAndSet(int i, int newValue) { - return unsafe.getAndSetInt(array, checkedByteOffset(i), newValue); + return U.getAndSetInt(array, checkedByteOffset(i), newValue); } /** @@ -165,7 +166,7 @@ } private boolean compareAndSetRaw(long offset, int expect, int update) { - return unsafe.compareAndSwapInt(array, offset, expect, update); + return U.compareAndSwapInt(array, offset, expect, update); } /** @@ -213,7 +214,7 @@ * @return the previous value */ public final int getAndAdd(int i, int delta) { - return unsafe.getAndAddInt(array, checkedByteOffset(i), delta); + return U.getAndAddInt(array, checkedByteOffset(i), delta); } /** @@ -247,7 +248,6 @@ return getAndAdd(i, delta) + delta; } - /** * Atomically updates the element at index {@code i} with the results * of applying the given function, returning the previous value. The
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicIntegerFieldUpdater.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,14 +34,14 @@ */ package java.util.concurrent.atomic; -import java.util.function.IntUnaryOperator; -import java.util.function.IntBinaryOperator; -import sun.misc.Unsafe; + import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.security.AccessController; +import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; -import java.security.PrivilegedActionException; +import java.util.function.IntBinaryOperator; +import java.util.function.IntUnaryOperator; import sun.reflect.CallerSensitive; import sun.reflect.Reflection; @@ -363,11 +363,11 @@ } /** - * Standard hotspot implementation using intrinsics + * Standard hotspot implementation using intrinsics. */ private static class AtomicIntegerFieldUpdaterImpl<T> extends AtomicIntegerFieldUpdater<T> { - private static final Unsafe unsafe = Unsafe.getUnsafe(); + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); private final long offset; private final Class<T> tclass; private final Class<?> cclass; @@ -391,7 +391,7 @@ ClassLoader ccl = caller.getClassLoader(); if ((ccl != null) && (ccl != cl) && ((cl == null) || !isAncestor(cl, ccl))) { - sun.reflect.misc.ReflectUtil.checkPackageAccess(tclass); + sun.reflect.misc.ReflectUtil.checkPackageAccess(tclass); } } catch (PrivilegedActionException pae) { throw new RuntimeException(pae.getException()); @@ -409,7 +409,7 @@ this.cclass = (Modifier.isProtected(modifiers) && caller != tclass) ? caller : null; this.tclass = tclass; - offset = unsafe.objectFieldOffset(field); + offset = U.objectFieldOffset(field); } /** @@ -437,32 +437,32 @@ public boolean compareAndSet(T obj, int expect, int update) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - return unsafe.compareAndSwapInt(obj, offset, expect, update); + return U.compareAndSwapInt(obj, offset, expect, update); } public boolean weakCompareAndSet(T obj, int expect, int update) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - return unsafe.compareAndSwapInt(obj, offset, expect, update); + return U.compareAndSwapInt(obj, offset, expect, update); } public void set(T obj, int newValue) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - unsafe.putIntVolatile(obj, offset, newValue); + U.putIntVolatile(obj, offset, newValue); } public void lazySet(T obj, int newValue) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - unsafe.putOrderedInt(obj, offset, newValue); + U.putOrderedInt(obj, offset, newValue); } public final int get(T obj) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - return unsafe.getIntVolatile(obj, offset); + return U.getIntVolatile(obj, offset); } public int getAndSet(T obj, int newValue) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - return unsafe.getAndSetInt(obj, offset, newValue); + return U.getAndSetInt(obj, offset, newValue); } public int getAndIncrement(T obj) { @@ -475,7 +475,7 @@ public int getAndAdd(T obj, int delta) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - return unsafe.getAndAddInt(obj, offset, delta); + return U.getAndAddInt(obj, offset, delta); } public int incrementAndGet(T obj) { @@ -483,7 +483,7 @@ } public int decrementAndGet(T obj) { - return getAndAdd(obj, -1) - 1; + return getAndAdd(obj, -1) - 1; } public int addAndGet(T obj, int delta) {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicLong.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicLong.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,9 +34,9 @@ */ package java.util.concurrent.atomic; -import java.util.function.LongUnaryOperator; + import java.util.function.LongBinaryOperator; -import sun.misc.Unsafe; +import java.util.function.LongUnaryOperator; /** * A {@code long} value that may be updated atomically. See the @@ -54,9 +54,8 @@ public class AtomicLong extends Number implements java.io.Serializable { private static final long serialVersionUID = 1927816293512124184L; - // setup to use Unsafe.compareAndSwapLong for updates - private static final Unsafe unsafe = Unsafe.getUnsafe(); - private static final long valueOffset; + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); + private static final long VALUE; /** * Records whether the underlying JVM supports lockless @@ -74,9 +73,11 @@ static { try { - valueOffset = unsafe.objectFieldOffset + VALUE = U.objectFieldOffset (AtomicLong.class.getDeclaredField("value")); - } catch (Exception ex) { throw new Error(ex); } + } catch (ReflectiveOperationException e) { + throw new Error(e); + } } private volatile long value; @@ -111,7 +112,9 @@ * @param newValue the new value */ public final void set(long newValue) { - value = newValue; + // Use putLongVolatile instead of ordinary volatile store when + // using compareAndSwapLong, for sake of some 32bit systems. + U.putLongVolatile(this, VALUE, newValue); } /** @@ -121,7 +124,7 @@ * @since 1.6 */ public final void lazySet(long newValue) { - unsafe.putOrderedLong(this, valueOffset, newValue); + U.putOrderedLong(this, VALUE, newValue); } /** @@ -131,7 +134,7 @@ * @return the previous value */ public final long getAndSet(long newValue) { - return unsafe.getAndSetLong(this, valueOffset, newValue); + return U.getAndSetLong(this, VALUE, newValue); } /** @@ -144,7 +147,7 @@ * the actual value was not equal to the expected value. */ public final boolean compareAndSet(long expect, long update) { - return unsafe.compareAndSwapLong(this, valueOffset, expect, update); + return U.compareAndSwapLong(this, VALUE, expect, update); } /** @@ -160,7 +163,7 @@ * @return {@code true} if successful */ public final boolean weakCompareAndSet(long expect, long update) { - return unsafe.compareAndSwapLong(this, valueOffset, expect, update); + return U.compareAndSwapLong(this, VALUE, expect, update); } /** @@ -169,7 +172,7 @@ * @return the previous value */ public final long getAndIncrement() { - return unsafe.getAndAddLong(this, valueOffset, 1L); + return U.getAndAddLong(this, VALUE, 1L); } /** @@ -178,7 +181,7 @@ * @return the previous value */ public final long getAndDecrement() { - return unsafe.getAndAddLong(this, valueOffset, -1L); + return U.getAndAddLong(this, VALUE, -1L); } /** @@ -188,7 +191,7 @@ * @return the previous value */ public final long getAndAdd(long delta) { - return unsafe.getAndAddLong(this, valueOffset, delta); + return U.getAndAddLong(this, VALUE, delta); } /** @@ -197,7 +200,7 @@ * @return the updated value */ public final long incrementAndGet() { - return unsafe.getAndAddLong(this, valueOffset, 1L) + 1L; + return U.getAndAddLong(this, VALUE, 1L) + 1L; } /** @@ -206,7 +209,7 @@ * @return the updated value */ public final long decrementAndGet() { - return unsafe.getAndAddLong(this, valueOffset, -1L) - 1L; + return U.getAndAddLong(this, VALUE, -1L) - 1L; } /** @@ -216,7 +219,7 @@ * @return the updated value */ public final long addAndGet(long delta) { - return unsafe.getAndAddLong(this, valueOffset, delta) + delta; + return U.getAndAddLong(this, VALUE, delta) + delta; } /** @@ -324,6 +327,7 @@ /** * Returns the value of this {@code AtomicLong} as a {@code long}. + * Equivalent to {@link #get()}. */ public long longValue() { return get();
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicLongArray.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicLongArray.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,9 +34,9 @@ */ package java.util.concurrent.atomic; -import java.util.function.LongUnaryOperator; + import java.util.function.LongBinaryOperator; -import sun.misc.Unsafe; +import java.util.function.LongUnaryOperator; /** * A {@code long} array in which elements may be updated atomically. @@ -48,16 +48,17 @@ public class AtomicLongArray implements java.io.Serializable { private static final long serialVersionUID = -2308431214976778248L; - private static final Unsafe unsafe = Unsafe.getUnsafe(); - private static final int base = unsafe.arrayBaseOffset(long[].class); - private static final int shift; + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); + private static final int ABASE; + private static final int ASHIFT; private final long[] array; static { - int scale = unsafe.arrayIndexScale(long[].class); + ABASE = U.arrayBaseOffset(long[].class); + int scale = U.arrayIndexScale(long[].class); if ((scale & (scale - 1)) != 0) - throw new Error("data type scale not a power of two"); - shift = 31 - Integer.numberOfLeadingZeros(scale); + throw new Error("array index scale not a power of two"); + ASHIFT = 31 - Integer.numberOfLeadingZeros(scale); } private long checkedByteOffset(int i) { @@ -68,7 +69,7 @@ } private static long byteOffset(int i) { - return ((long) i << shift) + base; + return ((long) i << ASHIFT) + ABASE; } /** @@ -113,7 +114,7 @@ } private long getRaw(long offset) { - return unsafe.getLongVolatile(array, offset); + return U.getLongVolatile(array, offset); } /** @@ -123,7 +124,7 @@ * @param newValue the new value */ public final void set(int i, long newValue) { - unsafe.putLongVolatile(array, checkedByteOffset(i), newValue); + U.putLongVolatile(array, checkedByteOffset(i), newValue); } /** @@ -134,7 +135,7 @@ * @since 1.6 */ public final void lazySet(int i, long newValue) { - unsafe.putOrderedLong(array, checkedByteOffset(i), newValue); + U.putOrderedLong(array, checkedByteOffset(i), newValue); } /** @@ -146,7 +147,7 @@ * @return the previous value */ public final long getAndSet(int i, long newValue) { - return unsafe.getAndSetLong(array, checkedByteOffset(i), newValue); + return U.getAndSetLong(array, checkedByteOffset(i), newValue); } /** @@ -164,7 +165,7 @@ } private boolean compareAndSetRaw(long offset, long expect, long update) { - return unsafe.compareAndSwapLong(array, offset, expect, update); + return U.compareAndSwapLong(array, offset, expect, update); } /** @@ -212,7 +213,7 @@ * @return the previous value */ public final long getAndAdd(int i, long delta) { - return unsafe.getAndAddLong(array, checkedByteOffset(i), delta); + return U.getAndAddLong(array, checkedByteOffset(i), delta); } /**
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicLongFieldUpdater.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,14 +34,14 @@ */ package java.util.concurrent.atomic; -import java.util.function.LongUnaryOperator; -import java.util.function.LongBinaryOperator; -import sun.misc.Unsafe; + import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.security.AccessController; +import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; -import java.security.PrivilegedActionException; +import java.util.function.LongBinaryOperator; +import java.util.function.LongUnaryOperator; import sun.reflect.CallerSensitive; import sun.reflect.Reflection; @@ -366,7 +366,7 @@ } private static class CASUpdater<T> extends AtomicLongFieldUpdater<T> { - private static final Unsafe unsafe = Unsafe.getUnsafe(); + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); private final long offset; private final Class<T> tclass; private final Class<?> cclass; @@ -389,7 +389,7 @@ ClassLoader ccl = caller.getClassLoader(); if ((ccl != null) && (ccl != cl) && ((cl == null) || !isAncestor(cl, ccl))) { - sun.reflect.misc.ReflectUtil.checkPackageAccess(tclass); + sun.reflect.misc.ReflectUtil.checkPackageAccess(tclass); } } catch (PrivilegedActionException pae) { throw new RuntimeException(pae.getException()); @@ -407,7 +407,7 @@ this.cclass = (Modifier.isProtected(modifiers) && caller != tclass) ? caller : null; this.tclass = tclass; - offset = unsafe.objectFieldOffset(field); + offset = U.objectFieldOffset(field); } private void fullCheck(T obj) { @@ -419,32 +419,32 @@ public boolean compareAndSet(T obj, long expect, long update) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - return unsafe.compareAndSwapLong(obj, offset, expect, update); + return U.compareAndSwapLong(obj, offset, expect, update); } public boolean weakCompareAndSet(T obj, long expect, long update) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - return unsafe.compareAndSwapLong(obj, offset, expect, update); + return U.compareAndSwapLong(obj, offset, expect, update); } public void set(T obj, long newValue) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - unsafe.putLongVolatile(obj, offset, newValue); + U.putLongVolatile(obj, offset, newValue); } public void lazySet(T obj, long newValue) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - unsafe.putOrderedLong(obj, offset, newValue); + U.putOrderedLong(obj, offset, newValue); } public long get(T obj) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - return unsafe.getLongVolatile(obj, offset); + return U.getLongVolatile(obj, offset); } public long getAndSet(T obj, long newValue) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - return unsafe.getAndSetLong(obj, offset, newValue); + return U.getAndSetLong(obj, offset, newValue); } public long getAndIncrement(T obj) { @@ -457,7 +457,7 @@ public long getAndAdd(T obj, long delta) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); - return unsafe.getAndAddLong(obj, offset, delta); + return U.getAndAddLong(obj, offset, delta); } public long incrementAndGet(T obj) { @@ -465,7 +465,7 @@ } public long decrementAndGet(T obj) { - return getAndAdd(obj, -1) - 1; + return getAndAdd(obj, -1) - 1; } public long addAndGet(T obj, long delta) { @@ -490,7 +490,7 @@ private static class LockedUpdater<T> extends AtomicLongFieldUpdater<T> { - private static final Unsafe unsafe = Unsafe.getUnsafe(); + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); private final long offset; private final Class<T> tclass; private final Class<?> cclass; @@ -513,7 +513,7 @@ ClassLoader ccl = caller.getClassLoader(); if ((ccl != null) && (ccl != cl) && ((cl == null) || !isAncestor(cl, ccl))) { - sun.reflect.misc.ReflectUtil.checkPackageAccess(tclass); + sun.reflect.misc.ReflectUtil.checkPackageAccess(tclass); } } catch (PrivilegedActionException pae) { throw new RuntimeException(pae.getException()); @@ -531,7 +531,7 @@ this.cclass = (Modifier.isProtected(modifiers) && caller != tclass) ? caller : null; this.tclass = tclass; - offset = unsafe.objectFieldOffset(field); + offset = U.objectFieldOffset(field); } private void fullCheck(T obj) { @@ -544,10 +544,10 @@ public boolean compareAndSet(T obj, long expect, long update) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); synchronized (this) { - long v = unsafe.getLong(obj, offset); + long v = U.getLong(obj, offset); if (v != expect) return false; - unsafe.putLong(obj, offset, update); + U.putLong(obj, offset, update); return true; } } @@ -559,7 +559,7 @@ public void set(T obj, long newValue) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); synchronized (this) { - unsafe.putLong(obj, offset, newValue); + U.putLong(obj, offset, newValue); } } @@ -570,7 +570,7 @@ public long get(T obj) { if (obj == null || obj.getClass() != tclass || cclass != null) fullCheck(obj); synchronized (this) { - return unsafe.getLong(obj, offset); + return U.getLong(obj, offset); } } @@ -595,7 +595,7 @@ * classloader's delegation chain. * Equivalent to the inaccessible: first.isAncestor(second). */ - private static boolean isAncestor(ClassLoader first, ClassLoader second) { + static boolean isAncestor(ClassLoader first, ClassLoader second) { ClassLoader acl = first; do { acl = acl.getParent();
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicMarkableReference.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicMarkableReference.java Tue Oct 06 12:51:55 2015 -0700 @@ -97,7 +97,7 @@ * Typical usage is {@code boolean[1] holder; ref = v.get(holder); }. * * @param markHolder an array of size of at least one. On return, - * {@code markholder[0]} will hold the value of the mark. + * {@code markHolder[0]} will hold the value of the mark. * @return the current value of the reference */ public V get(boolean[] markHolder) { @@ -190,23 +190,18 @@ // Unsafe mechanics - private static final sun.misc.Unsafe UNSAFE = sun.misc.Unsafe.getUnsafe(); - private static final long pairOffset = - objectFieldOffset(UNSAFE, "pair", AtomicMarkableReference.class); - - private boolean casPair(Pair<V> cmp, Pair<V> val) { - return UNSAFE.compareAndSwapObject(this, pairOffset, cmp, val); + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); + private static final long PAIR; + static { + try { + PAIR = U.objectFieldOffset + (AtomicMarkableReference.class.getDeclaredField("pair")); + } catch (ReflectiveOperationException e) { + throw new Error(e); + } } - static long objectFieldOffset(sun.misc.Unsafe UNSAFE, - String field, Class<?> klazz) { - try { - return UNSAFE.objectFieldOffset(klazz.getDeclaredField(field)); - } catch (NoSuchFieldException e) { - // Convert Exception to corresponding Error - NoSuchFieldError error = new NoSuchFieldError(field); - error.initCause(e); - throw error; - } + private boolean casPair(Pair<V> cmp, Pair<V> val) { + return U.compareAndSwapObject(this, PAIR, cmp, val); } }
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicReference.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicReference.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,9 +34,9 @@ */ package java.util.concurrent.atomic; -import java.util.function.UnaryOperator; + import java.util.function.BinaryOperator; -import sun.misc.Unsafe; +import java.util.function.UnaryOperator; /** * An object reference that may be updated atomically. See the {@link @@ -49,14 +49,16 @@ public class AtomicReference<V> implements java.io.Serializable { private static final long serialVersionUID = -1848883965231344442L; - private static final Unsafe unsafe = Unsafe.getUnsafe(); - private static final long valueOffset; + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); + private static final long VALUE; static { try { - valueOffset = unsafe.objectFieldOffset + VALUE = U.objectFieldOffset (AtomicReference.class.getDeclaredField("value")); - } catch (Exception ex) { throw new Error(ex); } + } catch (ReflectiveOperationException e) { + throw new Error(e); + } } private volatile V value; @@ -101,7 +103,7 @@ * @since 1.6 */ public final void lazySet(V newValue) { - unsafe.putOrderedObject(this, valueOffset, newValue); + U.putOrderedObject(this, VALUE, newValue); } /** @@ -113,7 +115,7 @@ * the actual value was not equal to the expected value. */ public final boolean compareAndSet(V expect, V update) { - return unsafe.compareAndSwapObject(this, valueOffset, expect, update); + return U.compareAndSwapObject(this, VALUE, expect, update); } /** @@ -129,7 +131,7 @@ * @return {@code true} if successful */ public final boolean weakCompareAndSet(V expect, V update) { - return unsafe.compareAndSwapObject(this, valueOffset, expect, update); + return U.compareAndSwapObject(this, VALUE, expect, update); } /** @@ -140,7 +142,7 @@ */ @SuppressWarnings("unchecked") public final V getAndSet(V newValue) { - return (V)unsafe.getAndSetObject(this, valueOffset, newValue); + return (V)U.getAndSetObject(this, VALUE, newValue); } /**
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicReferenceArray.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,11 +34,11 @@ */ package java.util.concurrent.atomic; -import java.util.function.UnaryOperator; -import java.util.function.BinaryOperator; + +import java.lang.reflect.Array; import java.util.Arrays; -import java.lang.reflect.Array; -import sun.misc.Unsafe; +import java.util.function.BinaryOperator; +import java.util.function.UnaryOperator; /** * An array of object references in which elements may be updated @@ -52,23 +52,22 @@ public class AtomicReferenceArray<E> implements java.io.Serializable { private static final long serialVersionUID = -6209656149925076980L; - private static final Unsafe unsafe; - private static final int base; - private static final int shift; - private static final long arrayFieldOffset; + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); + private static final int ABASE; + private static final int ASHIFT; + private static final long ARRAY; private final Object[] array; // must have exact type Object[] static { try { - unsafe = Unsafe.getUnsafe(); - arrayFieldOffset = unsafe.objectFieldOffset + ARRAY = U.objectFieldOffset (AtomicReferenceArray.class.getDeclaredField("array")); - base = unsafe.arrayBaseOffset(Object[].class); - int scale = unsafe.arrayIndexScale(Object[].class); + ABASE = U.arrayBaseOffset(Object[].class); + int scale = U.arrayIndexScale(Object[].class); if ((scale & (scale - 1)) != 0) - throw new Error("data type scale not a power of two"); - shift = 31 - Integer.numberOfLeadingZeros(scale); - } catch (Exception e) { + throw new Error("array index scale not a power of two"); + ASHIFT = 31 - Integer.numberOfLeadingZeros(scale); + } catch (ReflectiveOperationException e) { throw new Error(e); } } @@ -81,7 +80,7 @@ } private static long byteOffset(int i) { - return ((long) i << shift) + base; + return ((long) i << ASHIFT) + ABASE; } /** @@ -127,7 +126,7 @@ @SuppressWarnings("unchecked") private E getRaw(long offset) { - return (E) unsafe.getObjectVolatile(array, offset); + return (E) U.getObjectVolatile(array, offset); } /** @@ -137,7 +136,7 @@ * @param newValue the new value */ public final void set(int i, E newValue) { - unsafe.putObjectVolatile(array, checkedByteOffset(i), newValue); + U.putObjectVolatile(array, checkedByteOffset(i), newValue); } /** @@ -148,7 +147,7 @@ * @since 1.6 */ public final void lazySet(int i, E newValue) { - unsafe.putOrderedObject(array, checkedByteOffset(i), newValue); + U.putOrderedObject(array, checkedByteOffset(i), newValue); } /** @@ -161,7 +160,7 @@ */ @SuppressWarnings("unchecked") public final E getAndSet(int i, E newValue) { - return (E)unsafe.getAndSetObject(array, checkedByteOffset(i), newValue); + return (E)U.getAndSetObject(array, checkedByteOffset(i), newValue); } /** @@ -179,7 +178,7 @@ } private boolean compareAndSetRaw(long offset, E expect, E update) { - return unsafe.compareAndSwapObject(array, offset, expect, update); + return U.compareAndSwapObject(array, offset, expect, update); } /** @@ -314,17 +313,20 @@ /** * Reconstitutes the instance from a stream (that is, deserializes it). + * @param s the stream + * @throws ClassNotFoundException if the class of a serialized object + * could not be found + * @throws java.io.IOException if an I/O error occurs */ private void readObject(java.io.ObjectInputStream s) - throws java.io.IOException, ClassNotFoundException, - java.io.InvalidObjectException { + throws java.io.IOException, ClassNotFoundException { // Note: This must be changed if any additional fields are defined Object a = s.readFields().get("array", null); if (a == null || !a.getClass().isArray()) throw new java.io.InvalidObjectException("Not array type"); if (a.getClass() != Object[].class) a = Arrays.copyOf((Object[])a, Array.getLength(a), Object[].class); - unsafe.putObjectVolatile(this, arrayFieldOffset, a); + U.putObjectVolatile(this, ARRAY, a); } }
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicReferenceFieldUpdater.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,14 +34,14 @@ */ package java.util.concurrent.atomic; -import java.util.function.UnaryOperator; -import java.util.function.BinaryOperator; -import sun.misc.Unsafe; + import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.security.AccessController; +import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; -import java.security.PrivilegedActionException; +import java.util.function.BinaryOperator; +import java.util.function.UnaryOperator; import sun.reflect.CallerSensitive; import sun.reflect.Reflection; @@ -53,7 +53,7 @@ * independently subject to atomic updates. For example, a tree node * might be declared as * - * <pre> {@code + * <pre> {@code * class Node { * private volatile Node left, right; * @@ -62,7 +62,7 @@ * private static AtomicReferenceFieldUpdater<Node, Node> rightUpdater = * AtomicReferenceFieldUpdater.newUpdater(Node.class, Node.class, "right"); * - * Node getLeft() { return left; } + * Node getLeft() { return left; } * boolean compareAndSetLeft(Node expect, Node update) { * return leftUpdater.compareAndSet(this, expect, update); * } @@ -284,7 +284,7 @@ private static final class AtomicReferenceFieldUpdaterImpl<T,V> extends AtomicReferenceFieldUpdater<T,V> { - private static final Unsafe unsafe = Unsafe.getUnsafe(); + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); private final long offset; private final Class<T> tclass; private final Class<V> vclass; @@ -323,7 +323,7 @@ ClassLoader ccl = caller.getClassLoader(); if ((ccl != null) && (ccl != cl) && ((cl == null) || !isAncestor(cl, ccl))) { - sun.reflect.misc.ReflectUtil.checkPackageAccess(tclass); + sun.reflect.misc.ReflectUtil.checkPackageAccess(tclass); } fieldClass = field.getType(); } catch (PrivilegedActionException pae) { @@ -347,7 +347,7 @@ this.vclass = null; else this.vclass = vclass; - offset = unsafe.objectFieldOffset(field); + offset = U.objectFieldOffset(field); } /** @@ -386,7 +386,7 @@ (update != null && vclass != null && vclass != update.getClass())) updateCheck(obj, update); - return unsafe.compareAndSwapObject(obj, offset, expect, update); + return U.compareAndSwapObject(obj, offset, expect, update); } public boolean weakCompareAndSet(T obj, V expect, V update) { @@ -395,7 +395,7 @@ (update != null && vclass != null && vclass != update.getClass())) updateCheck(obj, update); - return unsafe.compareAndSwapObject(obj, offset, expect, update); + return U.compareAndSwapObject(obj, offset, expect, update); } public void set(T obj, V newValue) { @@ -403,7 +403,7 @@ (newValue != null && vclass != null && vclass != newValue.getClass())) updateCheck(obj, newValue); - unsafe.putObjectVolatile(obj, offset, newValue); + U.putObjectVolatile(obj, offset, newValue); } public void lazySet(T obj, V newValue) { @@ -411,14 +411,14 @@ (newValue != null && vclass != null && vclass != newValue.getClass())) updateCheck(obj, newValue); - unsafe.putOrderedObject(obj, offset, newValue); + U.putOrderedObject(obj, offset, newValue); } @SuppressWarnings("unchecked") public V get(T obj) { if (obj == null || obj.getClass() != tclass || cclass != null) targetCheck(obj); - return (V)unsafe.getObjectVolatile(obj, offset); + return (V)U.getObjectVolatile(obj, offset); } @SuppressWarnings("unchecked") @@ -427,7 +427,7 @@ (newValue != null && vclass != null && vclass != newValue.getClass())) updateCheck(obj, newValue); - return (V)unsafe.getAndSetObject(obj, offset, newValue); + return (V)U.getAndSetObject(obj, offset, newValue); } private void ensureProtectedAccess(T obj) {
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicStampedReference.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/AtomicStampedReference.java Tue Oct 06 12:51:55 2015 -0700 @@ -97,7 +97,7 @@ * Typical usage is {@code int[1] holder; ref = v.get(holder); }. * * @param stampHolder an array of size of at least one. On return, - * {@code stampholder[0]} will hold the value of the stamp. + * {@code stampHolder[0]} will hold the value of the stamp. * @return the current value of the reference */ public V get(int[] stampHolder) { @@ -190,23 +190,18 @@ // Unsafe mechanics - private static final sun.misc.Unsafe UNSAFE = sun.misc.Unsafe.getUnsafe(); - private static final long pairOffset = - objectFieldOffset(UNSAFE, "pair", AtomicStampedReference.class); - - private boolean casPair(Pair<V> cmp, Pair<V> val) { - return UNSAFE.compareAndSwapObject(this, pairOffset, cmp, val); + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); + private static final long PAIR; + static { + try { + PAIR = U.objectFieldOffset + (AtomicStampedReference.class.getDeclaredField("pair")); + } catch (ReflectiveOperationException e) { + throw new Error(e); + } } - static long objectFieldOffset(sun.misc.Unsafe UNSAFE, - String field, Class<?> klazz) { - try { - return UNSAFE.objectFieldOffset(klazz.getDeclaredField(field)); - } catch (NoSuchFieldException e) { - // Convert Exception to corresponding Error - NoSuchFieldError error = new NoSuchFieldError(field); - error.initCause(e); - throw error; - } + private boolean casPair(Pair<V> cmp, Pair<V> val) { + return U.compareAndSwapObject(this, PAIR, cmp, val); } }
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/DoubleAccumulator.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/DoubleAccumulator.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,6 +34,7 @@ */ package java.util.concurrent.atomic; + import java.io.Serializable; import java.util.function.DoubleBinaryOperator; @@ -126,14 +127,13 @@ * @return the current value */ public double get() { - Cell[] as = cells; Cell a; + Cell[] as = cells; double result = Double.longBitsToDouble(base); if (as != null) { - for (int i = 0; i < as.length; ++i) { - if ((a = as[i]) != null) + for (Cell a : as) + if (a != null) result = function.applyAsDouble (result, Double.longBitsToDouble(a.value)); - } } return result; } @@ -147,13 +147,12 @@ * updating. */ public void reset() { - Cell[] as = cells; Cell a; + Cell[] as = cells; base = identity; if (as != null) { - for (int i = 0; i < as.length; ++i) { - if ((a = as[i]) != null) - a.value = identity; - } + for (Cell a : as) + if (a != null) + a.reset(identity); } } @@ -168,14 +167,14 @@ * @return the value before reset */ public double getThenReset() { - Cell[] as = cells; Cell a; + Cell[] as = cells; double result = Double.longBitsToDouble(base); base = identity; if (as != null) { - for (int i = 0; i < as.length; ++i) { - if ((a = as[i]) != null) { + for (Cell a : as) { + if (a != null) { double v = Double.longBitsToDouble(a.value); - a.value = identity; + a.reset(identity); result = function.applyAsDouble(result, v); } } @@ -237,21 +236,27 @@ * @serial */ private final double value; + /** * The function used for updates. * @serial */ private final DoubleBinaryOperator function; + /** - * The identity value + * The identity value, represented as a long, as converted by + * {@link Double#doubleToRawLongBits}. The original identity + * can be recovered using {@link Double#longBitsToDouble}. * @serial */ private final long identity; - SerializationProxy(DoubleAccumulator a) { - function = a.function; - identity = a.identity; - value = a.get(); + SerializationProxy(double value, + DoubleBinaryOperator function, + long identity) { + this.value = value; + this.function = function; + this.identity = identity; } /** @@ -259,7 +264,7 @@ * held by this proxy. * * @return a {@code DoubleAccumulator} object with initial state - * held by this proxy. + * held by this proxy */ private Object readResolve() { double d = Double.longBitsToDouble(identity); @@ -279,7 +284,7 @@ * representing the state of this instance */ private Object writeReplace() { - return new SerializationProxy(this); + return new SerializationProxy(get(), function, identity); } /**
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/DoubleAdder.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/DoubleAdder.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,6 +34,7 @@ */ package java.util.concurrent.atomic; + import java.io.Serializable; /** @@ -114,13 +115,12 @@ * @return the sum */ public double sum() { - Cell[] as = cells; Cell a; + Cell[] as = cells; double sum = Double.longBitsToDouble(base); if (as != null) { - for (int i = 0; i < as.length; ++i) { - if ((a = as[i]) != null) + for (Cell a : as) + if (a != null) sum += Double.longBitsToDouble(a.value); - } } return sum; } @@ -133,13 +133,12 @@ * known that no threads are concurrently updating. */ public void reset() { - Cell[] as = cells; Cell a; + Cell[] as = cells; base = 0L; // relies on fact that double 0 must have same rep as long if (as != null) { - for (int i = 0; i < as.length; ++i) { - if ((a = as[i]) != null) - a.value = 0L; - } + for (Cell a : as) + if (a != null) + a.reset(); } } @@ -154,14 +153,14 @@ * @return the sum */ public double sumThenReset() { - Cell[] as = cells; Cell a; + Cell[] as = cells; double sum = Double.longBitsToDouble(base); base = 0L; if (as != null) { - for (int i = 0; i < as.length; ++i) { - if ((a = as[i]) != null) { + for (Cell a : as) { + if (a != null) { long v = a.value; - a.value = 0L; + a.reset(); sum += Double.longBitsToDouble(v); } } @@ -233,7 +232,7 @@ * held by this proxy. * * @return a {@code DoubleAdder} object with initial state - * held by this proxy. + * held by this proxy */ private Object readResolve() { DoubleAdder a = new DoubleAdder();
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/LongAccumulator.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/LongAccumulator.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,6 +34,7 @@ */ package java.util.concurrent.atomic; + import java.io.Serializable; import java.util.function.LongBinaryOperator; @@ -124,13 +125,12 @@ * @return the current value */ public long get() { - Cell[] as = cells; Cell a; + Cell[] as = cells; long result = base; if (as != null) { - for (int i = 0; i < as.length; ++i) { - if ((a = as[i]) != null) + for (Cell a : as) + if (a != null) result = function.applyAsLong(result, a.value); - } } return result; } @@ -144,13 +144,12 @@ * updating. */ public void reset() { - Cell[] as = cells; Cell a; + Cell[] as = cells; base = identity; if (as != null) { - for (int i = 0; i < as.length; ++i) { - if ((a = as[i]) != null) - a.value = identity; - } + for (Cell a : as) + if (a != null) + a.reset(identity); } } @@ -165,14 +164,14 @@ * @return the value before reset */ public long getThenReset() { - Cell[] as = cells; Cell a; + Cell[] as = cells; long result = base; base = identity; if (as != null) { - for (int i = 0; i < as.length; ++i) { - if ((a = as[i]) != null) { + for (Cell a : as) { + if (a != null) { long v = a.value; - a.value = identity; + a.reset(identity); result = function.applyAsLong(result, v); } } @@ -234,21 +233,25 @@ * @serial */ private final long value; + /** * The function used for updates. * @serial */ private final LongBinaryOperator function; + /** - * The identity value + * The identity value. * @serial */ private final long identity; - SerializationProxy(LongAccumulator a) { - function = a.function; - identity = a.identity; - value = a.get(); + SerializationProxy(long value, + LongBinaryOperator function, + long identity) { + this.value = value; + this.function = function; + this.identity = identity; } /** @@ -256,7 +259,7 @@ * held by this proxy. * * @return a {@code LongAccumulator} object with initial state - * held by this proxy. + * held by this proxy */ private Object readResolve() { LongAccumulator a = new LongAccumulator(function, identity); @@ -275,7 +278,7 @@ * representing the state of this instance */ private Object writeReplace() { - return new SerializationProxy(this); + return new SerializationProxy(get(), function, identity); } /**
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/LongAdder.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/LongAdder.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,6 +34,7 @@ */ package java.util.concurrent.atomic; + import java.io.Serializable; /** @@ -116,13 +117,12 @@ * @return the sum */ public long sum() { - Cell[] as = cells; Cell a; + Cell[] as = cells; long sum = base; if (as != null) { - for (int i = 0; i < as.length; ++i) { - if ((a = as[i]) != null) + for (Cell a : as) + if (a != null) sum += a.value; - } } return sum; } @@ -135,13 +135,12 @@ * known that no threads are concurrently updating. */ public void reset() { - Cell[] as = cells; Cell a; + Cell[] as = cells; base = 0L; if (as != null) { - for (int i = 0; i < as.length; ++i) { - if ((a = as[i]) != null) - a.value = 0L; - } + for (Cell a : as) + if (a != null) + a.reset(); } } @@ -156,14 +155,14 @@ * @return the sum */ public long sumThenReset() { - Cell[] as = cells; Cell a; + Cell[] as = cells; long sum = base; base = 0L; if (as != null) { - for (int i = 0; i < as.length; ++i) { - if ((a = as[i]) != null) { + for (Cell a : as) { + if (a != null) { sum += a.value; - a.value = 0L; + a.reset(); } } } @@ -230,11 +229,11 @@ } /** - * Return a {@code LongAdder} object with initial state + * Returns a {@code LongAdder} object with initial state * held by this proxy. * * @return a {@code LongAdder} object with initial state - * held by this proxy. + * held by this proxy */ private Object readResolve() { LongAdder a = new LongAdder();
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/Striped64.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/Striped64.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,9 +34,11 @@ */ package java.util.concurrent.atomic; -import java.util.function.LongBinaryOperator; + +import java.util.Arrays; +import java.util.concurrent.ThreadLocalRandom; import java.util.function.DoubleBinaryOperator; -import java.util.concurrent.ThreadLocalRandom; +import java.util.function.LongBinaryOperator; /** * A package-local class holding common representation and mechanics @@ -121,19 +123,23 @@ volatile long value; Cell(long x) { value = x; } final boolean cas(long cmp, long val) { - return UNSAFE.compareAndSwapLong(this, valueOffset, cmp, val); + return U.compareAndSwapLong(this, VALUE, cmp, val); + } + final void reset() { + U.putLongVolatile(this, VALUE, 0L); + } + final void reset(long identity) { + U.putLongVolatile(this, VALUE, identity); } // Unsafe mechanics - private static final sun.misc.Unsafe UNSAFE; - private static final long valueOffset; + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); + private static final long VALUE; static { try { - UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class<?> ak = Cell.class; - valueOffset = UNSAFE.objectFieldOffset - (ak.getDeclaredField("value")); - } catch (Exception e) { + VALUE = U.objectFieldOffset + (Cell.class.getDeclaredField("value")); + } catch (ReflectiveOperationException e) { throw new Error(e); } } @@ -159,7 +165,7 @@ transient volatile int cellsBusy; /** - * Package-private default constructor + * Package-private default constructor. */ Striped64() { } @@ -168,14 +174,14 @@ * CASes the base field. */ final boolean casBase(long cmp, long val) { - return UNSAFE.compareAndSwapLong(this, BASE, cmp, val); + return U.compareAndSwapLong(this, BASE, cmp, val); } /** * CASes the cellsBusy field from 0 to 1 to acquire lock. */ final boolean casCellsBusy() { - return UNSAFE.compareAndSwapInt(this, CELLSBUSY, 0, 1); + return U.compareAndSwapInt(this, CELLSBUSY, 0, 1); } /** @@ -183,7 +189,7 @@ * Duplicated from ThreadLocalRandom because of packaging restrictions. */ static final int getProbe() { - return UNSAFE.getInt(Thread.currentThread(), PROBE); + return U.getInt(Thread.currentThread(), PROBE); } /** @@ -195,7 +201,7 @@ probe ^= probe << 13; // xorshift probe ^= probe >>> 17; probe ^= probe << 5; - UNSAFE.putInt(Thread.currentThread(), PROBE, probe); + U.putInt(Thread.currentThread(), PROBE, probe); return probe; } @@ -220,27 +226,24 @@ wasUncontended = true; } boolean collide = false; // True if last slot nonempty - for (;;) { + done: for (;;) { Cell[] as; Cell a; int n; long v; if ((as = cells) != null && (n = as.length) > 0) { if ((a = as[(n - 1) & h]) == null) { if (cellsBusy == 0) { // Try to attach new Cell Cell r = new Cell(x); // Optimistically create if (cellsBusy == 0 && casCellsBusy()) { - boolean created = false; try { // Recheck under lock Cell[] rs; int m, j; if ((rs = cells) != null && (m = rs.length) > 0 && rs[j = (m - 1) & h] == null) { rs[j] = r; - created = true; + break done; } } finally { cellsBusy = 0; } - if (created) - break; continue; // Slot is now non-empty } } @@ -248,8 +251,8 @@ } else if (!wasUncontended) // CAS already known to fail wasUncontended = true; // Continue after rehash - else if (a.cas(v = a.value, ((fn == null) ? v + x : - fn.applyAsLong(v, x)))) + else if (a.cas(v = a.value, + (fn == null) ? v + x : fn.applyAsLong(v, x))) break; else if (n >= NCPU || cells != as) collide = false; // At max size or stale @@ -257,12 +260,8 @@ collide = true; else if (cellsBusy == 0 && casCellsBusy()) { try { - if (cells == as) { // Expand table unless stale - Cell[] rs = new Cell[n << 1]; - for (int i = 0; i < n; ++i) - rs[i] = as[i]; - cells = rs; - } + if (cells == as) // Expand table unless stale + cells = Arrays.copyOf(as, n << 1); } finally { cellsBusy = 0; } @@ -272,26 +271,30 @@ h = advanceProbe(h); } else if (cellsBusy == 0 && cells == as && casCellsBusy()) { - boolean init = false; try { // Initialize table if (cells == as) { Cell[] rs = new Cell[2]; rs[h & 1] = new Cell(x); cells = rs; - init = true; + break done; } } finally { cellsBusy = 0; } - if (init) - break; } - else if (casBase(v = base, ((fn == null) ? v + x : - fn.applyAsLong(v, x)))) - break; // Fall back on using base + // Fall back on using base + else if (casBase(v = base, + (fn == null) ? v + x : fn.applyAsLong(v, x))) + break done; } } + private static long apply(DoubleBinaryOperator fn, long v, double x) { + double d = Double.longBitsToDouble(v); + d = (fn == null) ? d + x : fn.applyAsDouble(d, x); + return Double.doubleToRawLongBits(d); + } + /** * Same as longAccumulate, but injecting long/double conversions * in too many places to sensibly merge with long version, given @@ -307,27 +310,24 @@ wasUncontended = true; } boolean collide = false; // True if last slot nonempty - for (;;) { + done: for (;;) { Cell[] as; Cell a; int n; long v; if ((as = cells) != null && (n = as.length) > 0) { if ((a = as[(n - 1) & h]) == null) { if (cellsBusy == 0) { // Try to attach new Cell Cell r = new Cell(Double.doubleToRawLongBits(x)); if (cellsBusy == 0 && casCellsBusy()) { - boolean created = false; try { // Recheck under lock Cell[] rs; int m, j; if ((rs = cells) != null && (m = rs.length) > 0 && rs[j = (m - 1) & h] == null) { rs[j] = r; - created = true; + break done; } } finally { cellsBusy = 0; } - if (created) - break; continue; // Slot is now non-empty } } @@ -335,13 +335,7 @@ } else if (!wasUncontended) // CAS already known to fail wasUncontended = true; // Continue after rehash - else if (a.cas(v = a.value, - ((fn == null) ? - Double.doubleToRawLongBits - (Double.longBitsToDouble(v) + x) : - Double.doubleToRawLongBits - (fn.applyAsDouble - (Double.longBitsToDouble(v), x))))) + else if (a.cas(v = a.value, apply(fn, v, x))) break; else if (n >= NCPU || cells != as) collide = false; // At max size or stale @@ -349,12 +343,8 @@ collide = true; else if (cellsBusy == 0 && casCellsBusy()) { try { - if (cells == as) { // Expand table unless stale - Cell[] rs = new Cell[n << 1]; - for (int i = 0; i < n; ++i) - rs[i] = as[i]; - cells = rs; - } + if (cells == as) // Expand table unless stale + cells = Arrays.copyOf(as, n << 1); } finally { cellsBusy = 0; } @@ -364,48 +354,38 @@ h = advanceProbe(h); } else if (cellsBusy == 0 && cells == as && casCellsBusy()) { - boolean init = false; try { // Initialize table if (cells == as) { Cell[] rs = new Cell[2]; rs[h & 1] = new Cell(Double.doubleToRawLongBits(x)); cells = rs; - init = true; + break done; } } finally { cellsBusy = 0; } - if (init) - break; } - else if (casBase(v = base, - ((fn == null) ? - Double.doubleToRawLongBits - (Double.longBitsToDouble(v) + x) : - Double.doubleToRawLongBits - (fn.applyAsDouble - (Double.longBitsToDouble(v), x))))) - break; // Fall back on using base + // Fall back on using base + else if (casBase(v = base, apply(fn, v, x))) + break done; } } // Unsafe mechanics - private static final sun.misc.Unsafe UNSAFE; + private static final sun.misc.Unsafe U = sun.misc.Unsafe.getUnsafe(); private static final long BASE; private static final long CELLSBUSY; private static final long PROBE; static { try { - UNSAFE = sun.misc.Unsafe.getUnsafe(); - Class<?> sk = Striped64.class; - BASE = UNSAFE.objectFieldOffset - (sk.getDeclaredField("base")); - CELLSBUSY = UNSAFE.objectFieldOffset - (sk.getDeclaredField("cellsBusy")); - Class<?> tk = Thread.class; - PROBE = UNSAFE.objectFieldOffset - (tk.getDeclaredField("threadLocalRandomProbe")); - } catch (Exception e) { + BASE = U.objectFieldOffset + (Striped64.class.getDeclaredField("base")); + CELLSBUSY = U.objectFieldOffset + (Striped64.class.getDeclaredField("cellsBusy")); + + PROBE = U.objectFieldOffset + (Thread.class.getDeclaredField("threadLocalRandomProbe")); + } catch (ReflectiveOperationException e) { throw new Error(e); } }
--- a/jdk/src/java.base/share/classes/java/util/concurrent/atomic/package-info.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/concurrent/atomic/package-info.java Tue Oct 06 12:51:55 2015 -0700 @@ -40,7 +40,7 @@ * array elements to those that also provide an atomic conditional update * operation of the form: * - * <pre> {@code boolean compareAndSet(expectedValue, updateValue);}</pre> + * <pre> {@code boolean compareAndSet(expectedValue, updateValue);}</pre> * * <p>This method (which varies in argument types across different * classes) atomically sets a variable to the {@code updateValue} if it @@ -67,7 +67,7 @@ * {@code AtomicInteger} provide atomic increment methods. One * application is to generate sequence numbers, as in: * - * <pre> {@code + * <pre> {@code * class Sequencer { * private final AtomicLong sequenceNumber * = new AtomicLong(0); @@ -82,7 +82,7 @@ * <pre> {@code long transform(long input)}</pre> * * write your utility method as follows: - * <pre> {@code + * <pre> {@code * long getAndTransform(AtomicLong var) { * long prev, next; * do { @@ -94,18 +94,19 @@ * * <p>The memory effects for accesses and updates of atomics generally * follow the rules for volatiles, as stated in - * <a href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-17.html#jls-17.4"> - * The Java Language Specification (17.4 Memory Model)</a>: + * <a href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-17.html#jls-17.4"> + * Chapter 17 of + * <cite>The Java™ Language Specification</cite></a>: * * <ul> * - * <li> {@code get} has the memory effects of reading a + * <li>{@code get} has the memory effects of reading a * {@code volatile} variable. * - * <li> {@code set} has the memory effects of writing (assigning) a + * <li>{@code set} has the memory effects of writing (assigning) a * {@code volatile} variable. * - * <li> {@code lazySet} has the memory effects of writing (assigning) + * <li>{@code lazySet} has the memory effects of writing (assigning) * a {@code volatile} variable except that it permits reorderings with * subsequent (but not previous) memory actions that do not themselves * impose reordering constraints with ordinary non-{@code volatile} @@ -119,7 +120,7 @@ * with respect to previous or subsequent reads and writes of any * variables other than the target of the {@code weakCompareAndSet}. * - * <li> {@code compareAndSet} + * <li>{@code compareAndSet} * and all other read-and-update operations such as {@code getAndIncrement} * have the memory effects of both reading and * writing {@code volatile} variables.
--- a/jdk/src/java.base/share/classes/java/util/spi/LocaleServiceProvider.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/java/util/spi/LocaleServiceProvider.java Tue Oct 06 12:51:55 2015 -0700 @@ -140,8 +140,10 @@ * desired locale sensitive service is not available, then the runtime looks for CLDR, * JRE in that order. * <p> - * The default order for looking up the preferred locale providers is "CLDR,JRE,SPI", - * so specifying "CLDR,JRE,SPI" is identical to the default behavior. + * The default order for looking up the preferred locale providers is "CLDR,JRE", + * so specifying "CLDR,JRE" is identical to the default behavior. Applications which + * require implementations of the locale sensitive services must explicitly specify + * "SPI" in order for the Java runtime to load them from the classpath. * * @since 1.6 */
--- a/jdk/src/java.base/share/classes/jdk/internal/jimage/ImageFileCreator.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/jdk/internal/jimage/ImageFileCreator.java Tue Oct 06 12:51:55 2015 -0700 @@ -261,6 +261,7 @@ Map<String, List<Entry>> entriesForModule, ByteOrder byteOrder) throws IOException { ResourcePoolImpl resources = new ResourcePoolImpl(byteOrder); + // Doesn't contain META-INF Set<String> mods = modulePackagesMap.keySet(); for (String mn : mods) { for (Entry entry : entriesForModule.get(mn)) { @@ -286,6 +287,31 @@ Archive archive = nameToArchive.get(mn); archive.close(); } + // Fix for 8136365. Do we have an archive with module name "META-INF"? + // If yes, we are recreating a jimage. + // This is a workaround for META-INF being at the top level of resource path + String mn = "META-INF"; + Archive archive = nameToArchive.get(mn); + if (archive != null) { + try { + for (Entry entry : entriesForModule.get(mn)) { + String path = entry.name(); + try (InputStream stream = entry.stream()) { + byte[] bytes = readAllBytes(stream); + path = mn + "/" + path; + try { + resources.addResource(new ResourcePool.Resource(path, + ByteBuffer.wrap(bytes))); + } catch (Exception ex) { + throw new IOException(ex); + } + } + } + } finally { + // Done with this archive, close it. + archive.close(); + } + } return resources; }
--- a/jdk/src/java.base/share/classes/sun/security/ssl/CertStatusReqItemV2.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/sun/security/ssl/CertStatusReqItemV2.java Tue Oct 06 12:51:55 2015 -0700 @@ -49,7 +49,7 @@ * enum { ocsp(1), ocsp_multi(2), (255) } CertificateStatusType; */ -final class CertStatusReqItemV2 implements StatusRequest { +final class CertStatusReqItemV2 { private final StatusRequestType statReqType; private final StatusRequest request; @@ -144,8 +144,7 @@ * * @return the encoded length of this {@code CertStatusReqItemV2} */ - @Override - public int length() { + int length() { // The length is the the status type (1 byte) + the request length // field (2 bytes) + the StatusRequest data length. return request.length() + 3; @@ -159,8 +158,7 @@ * * @throws IOException if any errors occur during the encoding process */ - @Override - public void send(HandshakeOutStream s) throws IOException { + void send(HandshakeOutStream s) throws IOException { s.putInt8(statReqType.id); s.putInt16(request.length()); request.send(s);
--- a/jdk/src/java.base/share/classes/sun/util/locale/provider/LocaleProviderAdapter.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/sun/util/locale/provider/LocaleProviderAdapter.java Tue Oct 06 12:51:55 2015 -0700 @@ -185,7 +185,6 @@ LocaleServiceProviderPool.config(LocaleProviderAdapter.class, e.toString()); } typeList.add(Type.JRE); - typeList.add(Type.SPI); defaultLocaleProviderAdapter = Type.JRE; }
--- a/jdk/src/java.base/share/classes/sun/util/resources/TimeZoneNames.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/classes/sun/util/resources/TimeZoneNames.java Tue Oct 06 12:51:55 2015 -0700 @@ -430,6 +430,7 @@ {"America/Eirunepe", ACT}, {"America/El_Salvador", CST}, {"America/Ensenada", PST}, + {"America/Fort_Nelson", MST}, {"America/Fort_Wayne", EST}, {"America/Fortaleza", BRT}, {"America/Glace_Bay", AST},
--- a/jdk/src/java.base/share/native/libjava/VMSupport.c Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/native/libjava/VMSupport.c Tue Oct 06 12:51:55 2015 -0700 @@ -42,6 +42,7 @@ if (!JDK_InitJvmHandle()) { JNU_ThrowInternalError(env, "Handle for JVM not found for symbol lookup"); + return NULL; } InitAgentProperties_fp = (INIT_AGENT_PROPERTIES_FN) JDK_FindJvmEntry("JVM_InitAgentProperties");
--- a/jdk/src/java.base/share/native/libjava/jni_util.h Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/native/libjava/jni_util.h Tue Oct 06 12:51:55 2015 -0700 @@ -388,6 +388,7 @@ char *jniEntryName); extern size_t getLastErrorString(char *buf, size_t len); +extern int getErrorString(int err, char *buf, size_t len); #ifdef __cplusplus } /* extern "C" */ #endif /* __cplusplus */
--- a/jdk/src/java.base/share/native/libjimage/jimage.cpp Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/native/libjimage/jimage.cpp Tue Oct 06 12:51:55 2015 -0700 @@ -29,8 +29,6 @@ #include "imageFile.hpp" -#define BOOT_VERSION "9.0" - /* * JImageOpen - Given the supplied full path file name, open an image file. This * function will also initialize tables and retrieve meta-data necessary to @@ -104,10 +102,6 @@ extern "C" JImageLocationRef JIMAGE_FindResource(JImageFile* image, const char* module_name, const char* version, const char* name, jlong* size) { - if (strcmp(version, BOOT_VERSION) != 0) { - return (JImageLocationRef) 0; - } - ImageLocation location; char fullpath[IMAGE_MAX_PATH];
--- a/jdk/src/java.base/share/native/libzip/zip_util.c Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/share/native/libzip/zip_util.c Tue Oct 06 12:51:55 2015 -0700 @@ -1438,6 +1438,7 @@ ZIP_ReadEntry(jzfile *zip, jzentry *entry, unsigned char *buf, char *entryname) { char *msg; + char tmpbuf[1024]; strcpy(entryname, entry->name); if (entry->csize == 0) { @@ -1456,8 +1457,11 @@ msg = zip->msg; ZIP_Unlock(zip); if (n == -1) { - jio_fprintf(stderr, "%s: %s\n", zip->name, - msg != 0 ? msg : strerror(errno)); + if (msg == 0) { + getErrorString(errno, tmpbuf, sizeof(tmpbuf)); + msg = tmpbuf; + } + jio_fprintf(stderr, "%s: %s\n", zip->name, msg); return JNI_FALSE; } buf += n; @@ -1470,8 +1474,11 @@ if ((msg == NULL) || (*msg == 0)) { msg = zip->msg; } - jio_fprintf(stderr, "%s: %s\n", zip->name, - msg != 0 ? msg : strerror(errno)); + if (msg == 0) { + getErrorString(errno, tmpbuf, sizeof(tmpbuf)); + msg = tmpbuf; + } + jio_fprintf(stderr, "%s: %s\n", zip->name, msg); return JNI_FALSE; } }
--- a/jdk/src/java.base/solaris/classes/sun/nio/ch/DevPollSelectorImpl.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/solaris/classes/sun/nio/ch/DevPollSelectorImpl.java Tue Oct 06 12:51:55 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 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 @@ -68,9 +68,23 @@ long pipeFds = IOUtil.makePipe(false); fd0 = (int) (pipeFds >>> 32); fd1 = (int) pipeFds; - pollWrapper = new DevPollArrayWrapper(); - pollWrapper.initInterrupt(fd0, fd1); - fdToKey = new HashMap<Integer,SelectionKeyImpl>(); + try { + pollWrapper = new DevPollArrayWrapper(); + pollWrapper.initInterrupt(fd0, fd1); + fdToKey = new HashMap<>(); + } catch (Throwable t) { + try { + FileDispatcherImpl.closeIntFD(fd0); + } catch (IOException ioe0) { + t.addSuppressed(ioe0); + } + try { + FileDispatcherImpl.closeIntFD(fd1); + } catch (IOException ioe1) { + t.addSuppressed(ioe1); + } + throw t; + } } protected int doSelect(long timeout)
--- a/jdk/src/java.base/unix/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/unix/classes/sun/net/www/protocol/http/ntlm/NTLMAuthentication.java Tue Oct 06 12:51:55 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 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 @@ -143,8 +143,9 @@ password = pw.getPassword(); init0(); try { - client = new Client(System.getProperty("ntlm.version"), hostname, - username, ntdomain, password); + String version = java.security.AccessController.doPrivileged( + new sun.security.action.GetPropertyAction("ntlm.version")); + client = new Client(version, hostname, username, ntdomain, password); } catch (NTLMException ne) { try { client = new Client(null, hostname, username, ntdomain, password);
--- a/jdk/src/java.base/unix/classes/sun/nio/ch/PollSelectorImpl.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/unix/classes/sun/nio/ch/PollSelectorImpl.java Tue Oct 06 12:51:55 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2001, 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 @@ -57,9 +57,23 @@ long pipeFds = IOUtil.makePipe(false); fd0 = (int) (pipeFds >>> 32); fd1 = (int) pipeFds; - pollWrapper = new PollArrayWrapper(INIT_CAP); - pollWrapper.initInterrupt(fd0, fd1); - channelArray = new SelectionKeyImpl[INIT_CAP]; + try { + pollWrapper = new PollArrayWrapper(INIT_CAP); + pollWrapper.initInterrupt(fd0, fd1); + channelArray = new SelectionKeyImpl[INIT_CAP]; + } catch (Throwable t) { + try { + FileDispatcherImpl.closeIntFD(fd0); + } catch (IOException ioe0) { + t.addSuppressed(ioe0); + } + try { + FileDispatcherImpl.closeIntFD(fd1); + } catch (IOException ioe1) { + t.addSuppressed(ioe1); + } + throw t; + } } protected int doSelect(long timeout)
--- a/jdk/src/java.base/unix/native/libjava/ProcessImpl_md.c Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/unix/native/libjava/ProcessImpl_md.c Tue Oct 06 12:51:55 2015 -0700 @@ -248,12 +248,13 @@ const char *detail = defaultDetail; char *errmsg; size_t fmtsize; + char tmpbuf[1024]; jstring s; if (errnum != 0) { - const char *s = strerror(errnum); - if (strcmp(s, "Unknown error") != 0) - detail = s; + int ret = getErrorString(errnum, tmpbuf, sizeof(tmpbuf)); + if (ret != EINVAL) + detail = tmpbuf; } /* ASCII Decimal representation uses 2.4 times as many bits as binary. */ fmtsize = sizeof(IOE_FORMAT) + strlen(detail) + 3 * sizeof(errnum);
--- a/jdk/src/java.base/unix/native/libjava/jni_util_md.c Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/unix/native/libjava/jni_util_md.c Tue Oct 06 12:51:55 2015 -0700 @@ -30,6 +30,13 @@ #include "jni_util.h" #include "dlfcn.h" +#if defined(LINUX) && (defined(_GNU_SOURCE) || \ + (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE < 200112L \ + && defined(_XOPEN_SOURCE) && _XOPEN_SOURCE < 600)) +extern int __xpg_strerror_r(int, char *, size_t); +#define strerror_r(a, b, c) __xpg_strerror_r((a), (b), (c)) +#endif + void* getProcessHandle() { static void *procHandle = NULL; if (procHandle != NULL) { @@ -55,16 +62,14 @@ size_t getLastErrorString(char *buf, size_t len) { - char *err; - size_t n; if (errno == 0 || len < 1) return 0; + getErrorString(errno, buf, len); + return strlen(buf); +} - err = strerror(errno); - n = strlen(err); - if (n >= len) - n = len - 1; - - strncpy(buf, err, n); - buf[n] = '\0'; - return n; +int +getErrorString(int err, char *buf, size_t len) +{ + if (err == 0 || len < 1) return 0; + return strerror_r(err, buf, len); }
--- a/jdk/src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/unix/native/libnet/PlainDatagramSocketImpl.c Tue Oct 06 12:51:55 2015 -0700 @@ -918,6 +918,7 @@ jobject this) { jobject fdObj = (*env)->GetObjectField(env, this, pdsi_fdID); int arg, fd, t = 1; + char tmpbuf[1024]; #ifdef AF_INET6 int domain = ipv6_available() ? AF_INET6 : AF_INET; #else @@ -953,22 +954,23 @@ arg = 65507; if (setsockopt(fd, SOL_SOCKET, SO_SNDBUF, (char *)&arg, sizeof(arg)) < 0) { - JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", - strerror(errno)); + getErrorString(errno, tmpbuf, sizeof(tmpbuf)); + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", tmpbuf); close(fd); return; } if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, (char *)&arg, sizeof(arg)) < 0) { - JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", - strerror(errno)); + getErrorString(errno, tmpbuf, sizeof(tmpbuf)); + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", tmpbuf); close(fd); return; } #endif /* __APPLE__ */ if (setsockopt(fd, SOL_SOCKET, SO_BROADCAST, (char*) &t, sizeof (int)) < 0) { - JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", strerror(errno)); + getErrorString(errno, tmpbuf, sizeof(tmpbuf)); + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", tmpbuf); close(fd); return; } @@ -977,9 +979,10 @@ arg = 0; int level = (domain == AF_INET6) ? IPPROTO_IPV6 : IPPROTO_IP; if ((setsockopt(fd, level, IP_MULTICAST_ALL, (char*)&arg, sizeof(arg)) < 0) && - (errno != ENOPROTOOPT)) { - JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", - strerror(errno)); + (errno != ENOPROTOOPT)) + { + getErrorString(errno, tmpbuf, sizeof(tmpbuf)); + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", tmpbuf); close(fd); return; } @@ -994,7 +997,8 @@ int ttl = 1; if (setsockopt(fd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, (char *) &ttl, sizeof (ttl)) < 0) { - JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", strerror(errno)); + getErrorString(errno, tmpbuf, sizeof(tmpbuf)); + JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", tmpbuf); close(fd); return; }
--- a/jdk/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/unix/native/libnio/fs/UnixNativeDispatcher.c Tue Oct 06 12:51:55 2015 -0700 @@ -315,21 +315,15 @@ JNIEXPORT jbyteArray Java_sun_nio_fs_UnixNativeDispatcher_strerror(JNIEnv* env, jclass this, jint error) { - char* msg; + char tmpbuf[1024]; jsize len; jbyteArray bytes; -#ifdef _AIX - /* strerror() is not thread-safe on AIX so we have to use strerror_r() */ - char buffer[256]; - msg = (strerror_r((int)error, buffer, 256) == 0) ? buffer : "Error while calling strerror_r"; -#else - msg = strerror((int)error); -#endif - len = strlen(msg); + getErrorString((int)errno, tmpbuf, sizeof(tmpbuf)); + len = strlen(tmpbuf); bytes = (*env)->NewByteArray(env, len); if (bytes != NULL) { - (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)msg); + (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)tmpbuf); } return bytes; }
--- a/jdk/src/java.base/windows/native/libjava/jni_util_md.c Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/windows/native/libjava/jni_util_md.c Tue Oct 06 12:51:55 2015 -0700 @@ -108,13 +108,9 @@ } } else if (errno != 0) { // C runtime error that has no corresponding WIN32 error code - const WCHAR *rtError = _wcserror(errno); - if (rtError != NULL) { - wcsncpy(utf16_osErrorMsg, rtError, cbErrorMsg); - // truncate if too long - utf16_osErrorMsg[cbErrorMsg - 1] = L'\0'; + int ret = _wcserror_s(utf16_osErrorMsg, cbErrorMsg, errno); + if (ret == 0) n = wcslen(utf16_osErrorMsg); - } } else noError = TRUE; //OS has no error to report @@ -147,3 +143,12 @@ } return n; } + +int +getErrorString(int err, char *buf, size_t len) +{ + int ret = 0; + if (err == 0 || len < 1) return 0; + ret = strerror_s(buf, len, err); + return ret; +}
--- a/jdk/src/java.base/windows/native/libnet/Inet4AddressImpl.c Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/windows/native/libnet/Inet4AddressImpl.c Tue Oct 06 12:51:55 2015 -0700 @@ -283,8 +283,11 @@ * Returns true is an ECHO_REPLY is received, otherwise, false. */ static jboolean -ping4(JNIEnv *env, unsigned long ipaddr, jint timeout) { - +ping4(JNIEnv *env, + unsigned long src_addr, + unsigned long dest_addr, + jint timeout) +{ // See https://msdn.microsoft.com/en-us/library/aa366050%28VS.85%29.aspx HANDLE hIcmpFile; @@ -307,14 +310,29 @@ return JNI_FALSE; } - dwRetVal = IcmpSendEcho(hIcmpFile, // HANDLE IcmpHandle, - ipaddr, // IPAddr DestinationAddress, - SendData, // LPVOID RequestData, - sizeof(SendData), // WORD RequestSize, - NULL, // PIP_OPTION_INFORMATION RequestOptions, - ReplyBuffer,// LPVOID ReplyBuffer, - ReplySize, // DWORD ReplySize, - timeout); // DWORD Timeout + if (src_addr == 0) { + dwRetVal = IcmpSendEcho(hIcmpFile, // HANDLE IcmpHandle, + dest_addr, // IPAddr DestinationAddress, + SendData, // LPVOID RequestData, + sizeof(SendData), // WORD RequestSize, + NULL, // PIP_OPTION_INFORMATION RequestOptions, + ReplyBuffer,// LPVOID ReplyBuffer, + ReplySize, // DWORD ReplySize, + timeout); // DWORD Timeout + } else { + dwRetVal = IcmpSendEcho2Ex(hIcmpFile, // HANDLE IcmpHandle, + NULL, // HANDLE Event + NULL, // PIO_APC_ROUTINE ApcRoutine + NULL, // ApcContext + src_addr, // IPAddr SourceAddress, + dest_addr, // IPAddr DestinationAddress, + SendData, // LPVOID RequestData, + sizeof(SendData), // WORD RequestSize, + NULL, // PIP_OPTION_INFORMATION RequestOptions, + ReplyBuffer,// LPVOID ReplyBuffer, + ReplySize, // DWORD ReplySize, + timeout); // DWORD Timeout + } free(ReplyBuffer); IcmpCloseHandle(hIcmpFile); @@ -337,9 +355,9 @@ jint timeout, jbyteArray ifArray, jint ttl) { - jint addr; + jint src_addr = 0; + jint dest_addr = 0; jbyte caddr[4]; - struct sockaddr_in him; int sz; /** @@ -349,14 +367,28 @@ if (sz != 4) { return JNI_FALSE; } - memset((char *) &him, 0, sizeof(him)); memset((char *) caddr, 0, sizeof(caddr)); (*env)->GetByteArrayRegion(env, addrArray, 0, 4, caddr); - addr = ((caddr[0]<<24) & 0xff000000); - addr |= ((caddr[1] <<16) & 0xff0000); - addr |= ((caddr[2] <<8) & 0xff00); - addr |= (caddr[3] & 0xff); - addr = htonl(addr); + dest_addr = ((caddr[0]<<24) & 0xff000000); + dest_addr |= ((caddr[1] <<16) & 0xff0000); + dest_addr |= ((caddr[2] <<8) & 0xff00); + dest_addr |= (caddr[3] & 0xff); + dest_addr = htonl(dest_addr); - return ping4(env, addr, timeout); + /** + * If a network interface was specified, let's convert its address + * as well. + */ + if (!(IS_NULL(ifArray))) { + memset((char *) caddr, 0, sizeof(caddr)); + (*env)->GetByteArrayRegion(env, ifArray, 0, 4, caddr); + src_addr = ((caddr[0]<<24) & 0xff000000); + src_addr |= ((caddr[1] <<16) & 0xff0000); + src_addr |= ((caddr[2] <<8) & 0xff00); + src_addr |= (caddr[3] & 0xff); + src_addr = htonl(src_addr); + } + + return ping4(env, src_addr, dest_addr, timeout); } +
--- a/jdk/src/java.base/windows/native/libnet/TwoStacksPlainDatagramSocketImpl.c Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.base/windows/native/libnet/TwoStacksPlainDatagramSocketImpl.c Tue Oct 06 12:51:55 2015 -0700 @@ -2211,8 +2211,11 @@ optlen = sizeof(optval.i); if (NET_GetSockOpt(fd, level, optname, (void *)&optval, &optlen) < 0) { - char errmsg[255]; - sprintf(errmsg, "error getting socket option: %s\n", strerror(errno)); + char tmpbuf[255]; + int size = 0; + char errmsg[255 + 31]; + getErrorString(errno, tmpbuf, sizeof(tmpbuf)); + sprintf(errmsg, "error getting socket option: %s", tmpbuf); JNU_ThrowByName(env, JNU_JAVANETPKG "SocketException", errmsg); return NULL; }
--- a/jdk/src/java.sql/share/classes/javax/transaction/xa/XAException.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/XAException.java Tue Oct 06 12:51:55 2015 -0700 @@ -31,7 +31,11 @@ * */ public class XAException extends Exception { - //private static final long serialVersionUID = -8249683284832867751L; + + /** + * Specify serialVersionUID for backward compatibility + */ + private static final long serialVersionUID = -8249683284832867751L; /** * The error code with which to create the SystemException.
--- a/jdk/src/java.transaction/share/classes/javax/transaction/InvalidTransactionException.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.transaction/share/classes/javax/transaction/InvalidTransactionException.java Tue Oct 06 12:51:55 2015 -0700 @@ -40,6 +40,11 @@ public class InvalidTransactionException extends java.rmi.RemoteException { /** + * Specify serialVersionUID for backward compatibility + */ + private static final long serialVersionUID = 3597320220337691496L; + + /** * Constructs an {@code InvalidTransactionException}. */ public InvalidTransactionException() {
--- a/jdk/src/java.transaction/share/classes/javax/transaction/TransactionRequiredException.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.transaction/share/classes/javax/transaction/TransactionRequiredException.java Tue Oct 06 12:51:55 2015 -0700 @@ -39,6 +39,11 @@ public class TransactionRequiredException extends java.rmi.RemoteException { /** + * Specify serialVersionUID for backward compatibility + */ + private static final long serialVersionUID = -1898806419937446439L; + + /** * Constructs a {@code TransactionRequiredException}. */ public TransactionRequiredException() {
--- a/jdk/src/java.transaction/share/classes/javax/transaction/TransactionRolledbackException.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/java.transaction/share/classes/javax/transaction/TransactionRolledbackException.java Tue Oct 06 12:51:55 2015 -0700 @@ -42,6 +42,11 @@ public class TransactionRolledbackException extends java.rmi.RemoteException { /** + * Specify serialVersionUID for backward compatibility + */ + private static final long serialVersionUID = -3142798139623020577L; + + /** * Constructs a {@code TransactionRolledbackException}. */ public TransactionRolledbackException() {
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/de/TimeZoneNames_de.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/de/TimeZoneNames_de.java Tue Oct 06 12:51:55 2015 -0700 @@ -431,6 +431,7 @@ {"America/Eirunepe", ACT}, {"America/El_Salvador", CST}, {"America/Ensenada", PST}, + {"America/Fort_Nelson", MST}, {"America/Fort_Wayne", EST}, {"America/Fortaleza", BRT}, {"America/Glace_Bay", AST},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/es/TimeZoneNames_es.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/es/TimeZoneNames_es.java Tue Oct 06 12:51:55 2015 -0700 @@ -431,6 +431,7 @@ {"America/Eirunepe", ACT}, {"America/El_Salvador", CST}, {"America/Ensenada", PST}, + {"America/Fort_Nelson", MST}, {"America/Fort_Wayne", EST}, {"America/Fortaleza", BRT}, {"America/Glace_Bay", AST},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/fr/TimeZoneNames_fr.java Tue Oct 06 12:51:55 2015 -0700 @@ -431,6 +431,7 @@ {"America/Eirunepe", ACT}, {"America/El_Salvador", CST}, {"America/Ensenada", PST}, + {"America/Fort_Nelson", MST}, {"America/Fort_Wayne", EST}, {"America/Fortaleza", BRT}, {"America/Glace_Bay", AST},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/it/TimeZoneNames_it.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/it/TimeZoneNames_it.java Tue Oct 06 12:51:55 2015 -0700 @@ -431,6 +431,7 @@ {"America/Eirunepe", ACT}, {"America/El_Salvador", CST}, {"America/Ensenada", PST}, + {"America/Fort_Nelson", MST}, {"America/Fort_Wayne", EST}, {"America/Fortaleza", BRT}, {"America/Glace_Bay", AST},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/ja/TimeZoneNames_ja.java Tue Oct 06 12:51:55 2015 -0700 @@ -431,6 +431,7 @@ {"America/Eirunepe", ACT}, {"America/El_Salvador", CST}, {"America/Ensenada", PST}, + {"America/Fort_Nelson", MST}, {"America/Fort_Wayne", EST}, {"America/Fortaleza", BRT}, {"America/Glace_Bay", AST},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/ko/TimeZoneNames_ko.java Tue Oct 06 12:51:55 2015 -0700 @@ -431,6 +431,7 @@ {"America/Eirunepe", ACT}, {"America/El_Salvador", CST}, {"America/Ensenada", PST}, + {"America/Fort_Nelson", MST}, {"America/Fort_Wayne", EST}, {"America/Fortaleza", BRT}, {"America/Glace_Bay", AST},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/pt/BR/TimeZoneNames_pt_BR.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/pt/BR/TimeZoneNames_pt_BR.java Tue Oct 06 12:51:55 2015 -0700 @@ -431,6 +431,7 @@ {"America/Eirunepe", ACT}, {"America/El_Salvador", CST}, {"America/Ensenada", PST}, + {"America/Fort_Nelson", MST}, {"America/Fort_Wayne", EST}, {"America/Fortaleza", BRT}, {"America/Glace_Bay", AST},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/sv/TimeZoneNames_sv.java Tue Oct 06 12:51:55 2015 -0700 @@ -431,6 +431,7 @@ {"America/Eirunepe", ACT}, {"America/El_Salvador", CST}, {"America/Ensenada", PST}, + {"America/Fort_Nelson", MST}, {"America/Fort_Wayne", EST}, {"America/Fortaleza", BRT}, {"America/Glace_Bay", AST},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/zh/CN/TimeZoneNames_zh_CN.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/zh/CN/TimeZoneNames_zh_CN.java Tue Oct 06 12:51:55 2015 -0700 @@ -431,6 +431,7 @@ {"America/Eirunepe", ACT}, {"America/El_Salvador", CST}, {"America/Ensenada", PST}, + {"America/Fort_Nelson", MST}, {"America/Fort_Wayne", EST}, {"America/Fortaleza", BRT}, {"America/Glace_Bay", AST},
--- a/jdk/src/jdk.localedata/share/classes/sun/util/resources/zh/TW/TimeZoneNames_zh_TW.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/src/jdk.localedata/share/classes/sun/util/resources/zh/TW/TimeZoneNames_zh_TW.java Tue Oct 06 12:51:55 2015 -0700 @@ -431,6 +431,7 @@ {"America/Eirunepe", ACT}, {"America/El_Salvador", CST}, {"America/Ensenada", PST}, + {"America/Fort_Nelson", MST}, {"America/Fort_Wayne", EST}, {"America/Fortaleza", BRT}, {"America/Glace_Bay", AST},
--- a/jdk/test/TEST.groups Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/TEST.groups Tue Oct 06 12:51:55 2015 -0700 @@ -250,6 +250,7 @@ javax/naming \ javax/script \ javax/smartcardio \ + javax/transaction \ javax/xml \ -javax/xml/crypto \ jdk/asm \
--- a/jdk/test/java/lang/ProcessHandle/TreeTest.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/java/lang/ProcessHandle/TreeTest.java Tue Oct 06 12:51:55 2015 -0700 @@ -34,6 +34,7 @@ import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.concurrent.ExecutionException; +import jdk.testlibrary.Utils; import org.testng.Assert; import org.testng.TestNG; import org.testng.annotations.Test; @@ -174,7 +175,7 @@ // Poll until all 9 child processes exist or the timeout is reached int expected = 9; - long timeout = jdk.testlibrary.Utils.adjustTimeout(10L); + long timeout = Utils.adjustTimeout(10L); Instant endTimeout = Instant.now().plusSeconds(timeout); do { Thread.sleep(200L); @@ -223,6 +224,10 @@ /** * Test destroy of processes. + * A JavaChild is started and it starts three children. + * Each one is then checked to be alive and listed by allChildren + * and forcibly destroyed. + * After they exit they should no longer be listed by allChildren. */ @Test public static void test3() { @@ -239,7 +244,7 @@ // Spawn children and have them wait p1.sendAction("spawn", newChildren, "stdin"); - // Gather the PIDs from the output of the spawing process + // Gather the PIDs from the output of the spawning process p1.forEachOutputLine((s) -> { String[] split = s.trim().split(" "); if (split.length == 3 && split[1].equals("spawn")) { @@ -259,15 +264,23 @@ Assert.assertTrue(allChildren.contains(p), "Spawned child should be listed in allChildren: " + p); p.destroyForcibly(); }); + Assert.assertEquals(processes.size(), newChildren, "Wrong number of children"); processes.forEach((p, parent) -> { - while (p.isAlive()) { + for (long retries = Utils.adjustTimeout(100L); retries > 0 ; retries--) { + if (!p.isAlive()) { + return; // not alive, go on to the next + } + // Wait a bit and retry try { - Thread.sleep(100L); // It will happen but don't burn the cpu + Thread.sleep(100L); } catch (InterruptedException ie) { // try again } } + printf("Timeout waiting for exit of pid %s, parent: %s, info: %s%n", + p, parent, p.info()); + Assert.fail("Process still alive: " + p); }); p1.destroyForcibly(); p1.waitFor(); @@ -281,7 +294,12 @@ } catch (InterruptedException inte) { Assert.fail("InterruptedException", inte); } finally { - processes.forEach((p, parent) -> p.destroyForcibly()); + processes.forEach((p, parent) -> { + if (p.isAlive()) { + ProcessUtil.printProcess(p); + p.destroyForcibly(); + } + }); } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/lang/StrictMath/PowTests.java Tue Oct 06 12:51:55 2015 -0700 @@ -0,0 +1,301 @@ +/* + * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8136874 + * @summary Tests for StrictMath.pow + * @author Joseph D. Darcy + */ + +/** + * The tests in ../Math/PowTests.java test properties that should + * hold for any pow implementation, including the FDLIBM-based one + * required for StrictMath.pow. Therefore, the test cases in + * ../Math/PowTests.java are run against both the Math and + * StrictMath versions of pow. The role of this test is to verify + * that the FDLIBM pow algorithm is being used by running golden + * file tests on values that may vary from one conforming pow + * implementation to another. + */ + +public class PowTests { + private PowTests(){} + + private static final double INFINITY = Double.POSITIVE_INFINITY; + + public static void main(String... args) { + int failures = 0; + + failures += testPow(); + + if (failures > 0) { + System.err.println("Testing pow incurred " + + failures + " failures."); + throw new RuntimeException(); + } + } + + private static int testPow() { + int failures = 0; + + double [][] testCases = { + // Probe near decision points of the fdlibm algorithm + + {0x1.00000_0000_0001p1, // |x| > 1.0 + INFINITY, // infinity + INFINITY // 0 + }, + + + {0x1.fffffp-1, // |x| = 0.9999995231628418 + 0x1.0p31, // 2^31 + 0.0 // 0 + }, + + {0x1.ffffe_ffffffffp-1, // |x| < 0.9999995231628418 + 0x1.0p31, // 2^31 + 0.0 // 0 + }, + + {-0x1.ffffe_ffffffffp-1, // |x| < 0.9999995231628418 + 0x1.0p31, // 2^31 + 0.0 // 0 + }, + + {0x1.fffffp-1, // |x| = 0.9999995231628418 + 0x1.0000000000001p31, // nextUp(2^31) + 0.0 // 0 + }, + + {0x1.fffffp-1, // |x| = 0.9999995231628418 + 0x1.0p31 + 1.0, // 2^31 + 1, odd integer + 0.0 // 0 + }, + + {0x1.fffffp-1, // |x| = 0.9999995231628418 + 0x1.0p31 + 2.0, // 2^31 + 2, even integer + 0.0 // 0 + }, + + {0x1.ffffe_ffffffffp-1, // |x| < 0.9999995231628418 + 0x1.0000000000001p31, // nextUp(2^31) + 0.0 // 0 + }, + + {-0x1.ffffe_ffffffffp-1, // |x| < 0.9999995231628418 + 0x1.0000000000001p31, // nextUp(2^31) + Double.NaN // 0 + }, + + {-0x1.ffffe_ffffffffp-1, // |x| < 0.9999995231628418 + 0x1.0p31 + 1.0, // 2^31 + 1, odd integer + -0.0 // 0 + }, + + {-0x1.ffffe_ffffffffp-1, // |x| < 0.9999995231628418 + 0x1.0p31 + 2.0, // 2^31 + 2, even integer + 0.0 // 0 + }, + + {0x1.0000000000001p0, // nextUp(1) + 0x1.0000000000001p31, // nextUp(2^31) + 0x1.00000800002p0 + }, + + {0x1.0000000000001p0, // nextUp(1) + -0x1.0000000000001p31, // -nextUp(2^31) + 0x1.fffff000004p-1 + }, + + {-0x1.0000000000001p0, // -nextUp(1) + -0x1.0000000000001p31, // -nextUp(2^31) + Double.NaN + }, + + {-0x1.0000000000001p0, // -nextUp(1) + 0x1.0p31 + 1.0, // 2^31 + 1, odd integer + -0x1.0000080000201p0 + }, + + {-0x1.0000000000001p0, // -nextUp(1) + 0x1.0p31 + 2.0, // 2^31 + 2, even integer + 0x1.0000080000202p0 + }, + + {0x1.00000_ffff_ffffp0, + 0x1.00001_0000_0000p31, + INFINITY + }, + + // Huge y, |y| > 0x1.00000_ffff_ffffp31 ~2**31 is a decision point + + // First y = 0x1.00001_0000_0000p31 + {0x1.fffff_ffff_ffffp-1, + 0x1.00001_0000_0000p31, + 0x1.fffff7ffff9p-1 + }, + + {0x1.fffff_ffff_fffep-1, + 0x1.00001_0000_0000p31, + 0x1.ffffefffff4p-1 + }, + + {0x1.fffff_0000_0000p-1, + 0x1.00001_0000_0000p31, + 0.0 + }, + + // Cycle through decision points on x values + + {0x1.fffff_0000_0000p-1, + 0x1.00001_0000_0000p31, + 0.0 + }, + + {-0x1.fffff_0000_0000p-1, + 0x1.00001_0000_0000p31, + 0.0 + }, + + {0x1.ffffe_ffff_ffffp-1, + 0x1.00001_0000_0000p31, + 0.0 + }, + + {-0x1.ffffe_ffff_ffffp-1, + 0x1.00001_0000_0000p31, + 0.0 + }, + + {0x1.00000_ffff_ffffp0, + 0x1.00001_0000_0000p31, + INFINITY + }, + + + {0x1.00001_0000_0000p0, + 0x1.00001_0000_0000p31, + INFINITY + }, + + {-0x1.00000_ffff_ffffp0, + 0x1.00001_0000_0000p31, + INFINITY + }, + + + {-0x1.00001_0000_0000p0, + 0x1.00001_0000_0000p31, + INFINITY + }, + + // Now y = -0x1.00001_0000_0000p31 + + {0x1.fffff_0000_0000p-1, + -0x1.00001_0000_0000p31, + INFINITY + }, + + {-0x1.fffff_0000_0000p-1, + 0x1.00001_0000_0000p31, + 0.0 + }, + + {0x1.ffffe_ffff_ffffp-1, + -0x1.00001_0000_0000p31, + INFINITY + }, + + {-0x1.ffffe_ffff_ffffp-1, + -0x1.00001_0000_0000p31, + INFINITY + }, + + {0x1.00000_ffff_ffffp0, + -0x1.00001_0000_0000p31, + 0.0 + }, + + + {0x1.00001_0000_0000p0, + -0x1.00001_0000_0000p31, + 0.0 + }, + + {-0x1.00000_ffff_ffffp0, + -0x1.00001_0000_0000p31, + 0.0 + }, + + + {-0x1.00001_0000_0000p0, + -0x1.00001_0000_0000p31, + 0.0 + }, + + //----------------------- + + {0x1.ffffe_ffff_ffffp-1, + -0x1.00001_0000_0000p31, + INFINITY + }, + + {0x1.00001_0000_0000p0, + -0x1.00001_0000_0000p31, + 0.0 + }, + + + {0x1.0000000000002p0, // 1.0000000000000004 + 0x1.f4add4p30, // 2.1E9 + 0x1.00000fa56f1a6p0 // 1.0000009325877754 + }, + + // Verify no early overflow + {0x1.0000000000002p0, // 1.0000000000000004 + 0x1.0642acp31, // 2.2E9 + 0x1.000010642b465p0, // 1.0000009769967388 + }, + + // Verify proper overflow + {0x1.0000000000002p0, // 1.0000000000000004 + 0x1.62e42fefa39fp60, // 1.59828858065033216E18 + 0x1.ffffffffffd9fp1023, // 1.7976931348621944E308 + }, + + }; + + for (double[] testCase: testCases) + failures += testPowCase(testCase[0], testCase[1], testCase[2]); + + return failures; + } + + private static int testPowCase(double input1, double input2, double expected) { + int failures = 0; + failures += Tests.test("StrictMath.pow(double)", input1, input2, + StrictMath.pow(input1, input2), expected); + return failures; + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/net/InetAddress/IsReachableViaLoopbackTest.java Tue Oct 06 12:51:55 2015 -0700 @@ -0,0 +1,40 @@ +import java.io.*; +import java.net.*; +import java.util.*; + +/** + * @test + * @bug 8135305 + * @summary ensure we can't ping external hosts via loopback if + */ + +public class IsReachableViaLoopbackTest { + public static void main(String[] args) { + try { + InetAddress addr = InetAddress.getByName("localhost"); + InetAddress remoteAddr = InetAddress.getByName("bugs.openjdk.java.net"); + if (!addr.isReachable(10000)) + throw new RuntimeException("Localhost should always be reachable"); + NetworkInterface inf = NetworkInterface.getByInetAddress(addr); + if (inf != null) { + if (!addr.isReachable(inf, 20, 10000)) { + throw new RuntimeException("Localhost should always be reachable"); + } else { + System.out.println(addr + " is reachable"); + } + if (remoteAddr.isReachable(inf, 20, 10000)) { + throw new RuntimeException(remoteAddr + " is reachable"); + } else { + System.out.println(remoteAddr + " is NOT reachable"); + } + } else { + System.out.println("inf == null"); + } + + } catch (IOException e) { + throw new RuntimeException("Unexpected exception:" + e); + } + System.out.println("IsReachableViaLoopbackTest EXIT"); + } +} +
--- a/jdk/test/java/nio/channels/FileChannel/LoopingTruncate.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/java/nio/channels/FileChannel/LoopingTruncate.java Tue Oct 06 12:51:55 2015 -0700 @@ -23,32 +23,39 @@ /** * @test - * @bug 8137121 + * @bug 8137121 8137230 * @summary (fc) Infinite loop FileChannel.truncate + * @library /lib/testlibrary + * @build jdk.testlibrary.Utils * @run main/othervm LoopingTruncate */ import java.nio.ByteBuffer; import java.nio.channels.FileChannel; +import java.nio.channels.ClosedByInterruptException; import java.nio.file.Files; import java.nio.file.Path; import static java.nio.file.StandardOpenOption.*; +import static jdk.testlibrary.Utils.adjustTimeout; public class LoopingTruncate { // (int)FATEFUL_SIZE == -3 == IOStatus.INTERRUPTED static long FATEFUL_SIZE = 0x1FFFFFFFDL; - static long TIMEOUT = 10_000; // 10 seconds + // At least 20 seconds + static long TIMEOUT = adjustTimeout(20_000); public static void main(String[] args) throws Throwable { Path path = Files.createTempFile("LoopingTruncate.tmp", null); - try { + try (FileChannel fc = FileChannel.open(path, CREATE, WRITE)) { + fc.position(FATEFUL_SIZE + 1L); + fc.write(ByteBuffer.wrap(new byte[] {0})); + Thread th = new Thread(() -> { - try (FileChannel fc = FileChannel.open(path, CREATE, WRITE)) { - fc.position(FATEFUL_SIZE + 1L); - fc.write(ByteBuffer.wrap(new byte[] {0})); + try { fc.truncate(FATEFUL_SIZE); + } catch (ClosedByInterruptException ignore) { } catch (Exception e) { throw new RuntimeException(e); }}); @@ -56,7 +63,14 @@ th.join(TIMEOUT); if (th.isAlive()) { + System.err.println("=== Stack trace of the guilty thread:"); + for (StackTraceElement el : th.getStackTrace()) { + System.err.println("\t" + el); + } + System.err.println("==="); + th.interrupt(); + th.join(); throw new RuntimeException("Failed to complete on time"); } } finally {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/text/Format/DateFormat/Bug8081794.java Tue Oct 06 12:51:55 2015 -0700 @@ -0,0 +1,51 @@ +/* + * 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. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8081794 + * @summary ParsePosition getErrorIndex should return correct index + */ +import java.text.ParsePosition; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; + +public class Bug8081794 { + + public static void main(String[] args) { + String date = "13 Jan 2005 21:45:34 ABC"; + String format = "dd MMM yyyy HH:mm:ss z"; + ParsePosition pp = new ParsePosition(0); + pp.setIndex(0); + SimpleDateFormat sd = new SimpleDateFormat(format, Locale.ENGLISH); + Date d = sd.parse(date, pp); + int errorIndex = pp.getErrorIndex(); + if (errorIndex == 21) { + System.out.println(": passed"); + } else { + System.out.println(": failed"); + throw new RuntimeException("Failed with wrong index: " + errorIndex); + } + } +}
--- a/jdk/test/java/text/Format/DecimalFormat/RoundingAndPropertyTest.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/java/text/Format/DecimalFormat/RoundingAndPropertyTest.java Tue Oct 06 12:51:55 2015 -0700 @@ -25,6 +25,7 @@ * @bug 7050528 * @summary Test java.text.DecimalFormat fast-path for format(double...) * @author Olivier Lagneau + * @build GoldenDoubleValues GoldenFormattedValues * @run main RoundingAndPropertyTest * */
--- a/jdk/test/java/util/Locale/Bug8008577.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/java/util/Locale/Bug8008577.java Tue Oct 06 12:51:55 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 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 @@ -23,7 +23,7 @@ /* * @test - * @bug 8008577 + * @bug 8008577 8138613 * @summary Check whether CLDR locale provider adapter is enabled by default * @compile -XDignore.symbol.file Bug8008577.java * @run main Bug8008577 @@ -38,7 +38,6 @@ static final LocaleProviderAdapter.Type[] expected = { LocaleProviderAdapter.Type.CLDR, LocaleProviderAdapter.Type.JRE, - LocaleProviderAdapter.Type.SPI, }; public static void main(String[] args) {
--- a/jdk/test/java/util/logging/DrainFindDeadlockTest.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/java/util/logging/DrainFindDeadlockTest.java Tue Oct 06 12:51:55 2015 -0700 @@ -35,7 +35,7 @@ * @summary check for deadlock between findLogger() and drainLoggerRefQueueBounded() * @author jim.gish@oracle.com * @build DrainFindDeadlockTest - * @run main/othervm/timeout=10 DrainFindDeadlockTest + * @run main/othervm DrainFindDeadlockTest * @key randomness */ @@ -109,9 +109,13 @@ public void run() { System.out.println("Running " + Thread.currentThread().getName()); - for (int i=0; i < MAX_ITERATIONS; i++) { - logger = Logger.getLogger("DrainFindDeadlockTest"+i); - DrainFindDeadlockTest.randomDelay(); + try { + for (int i=0; i < MAX_ITERATIONS; i++) { + logger = Logger.getLogger("DrainFindDeadlockTest"+i); + DrainFindDeadlockTest.randomDelay(); + } + } finally { + System.out.println("Completed " + Thread.currentThread().getName()); } } } @@ -120,13 +124,17 @@ @Override public void run() { System.out.println("Running " + Thread.currentThread().getName()); - for (int i=0; i < MAX_ITERATIONS; i++) { - try { - mgr.readConfiguration(); - } catch (IOException | SecurityException ex) { - throw new RuntimeException("FAILED: test setup problem", ex); + try { + for (int i=0; i < MAX_ITERATIONS; i++) { + try { + mgr.readConfiguration(); + } catch (IOException | SecurityException ex) { + throw new RuntimeException("FAILED: test setup problem", ex); + } + DrainFindDeadlockTest.randomDelay(); } - DrainFindDeadlockTest.randomDelay(); + } finally { + System.out.println("Completed " + Thread.currentThread().getName()); } } } @@ -185,12 +193,16 @@ @Override public void run() { System.out.println("Running " + Thread.currentThread().getName()); - for (int i=0; i < MAX_ITERATIONS*2; i++) { - checkState(t1, t2); - try { - Thread.sleep(10); - } catch (InterruptedException ex) { - }; + try { + for (int i=0; i < MAX_ITERATIONS*2; i++) { + checkState(t1, t2); + try { + Thread.sleep(10); + } catch (InterruptedException ex) { + } + } + } finally { + System.out.println("Completed " + Thread.currentThread().getName()); } } }
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/transaction/testng/TEST.properties Tue Oct 06 12:51:55 2015 -0700 @@ -0,0 +1,4 @@ +# JDBC unit tests uses TestNG +TestNG.dirs= . +othervm.dirs= . +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/transaction/testng/test/transaction/InvalidTransactionExceptionTests.java Tue Oct 06 12:51:55 2015 -0700 @@ -0,0 +1,70 @@ +/* + * 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. + * + * 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 test.transaction; + +import java.io.ByteArrayInputStream; +import java.io.ObjectInputStream; +import javax.transaction.InvalidTransactionException; +import static org.testng.Assert.*; +import org.testng.annotations.Test; +import util.SerializedTransactionExceptions; + +public class InvalidTransactionExceptionTests { + + protected final String reason = "reason"; + + /** + * Create InvalidTransactionException with no-arg constructor + */ + @Test + public void test1() { + InvalidTransactionException ex = new InvalidTransactionException(); + assertTrue(ex.getMessage() == null + && ex.getCause() == null); + } + + /** + * Create InvalidTransactionException with message + */ + @Test + public void test2() { + InvalidTransactionException ex = new InvalidTransactionException(reason); + assertTrue(ex.getMessage().equals(reason) + && ex.getCause() == null); + } + + /** + * De-Serialize a InvalidTransactionException from JDBC 4.0 and make sure + * you can read it back properly + */ + @Test + public void test3() throws Exception { + + ObjectInputStream ois = new ObjectInputStream( + new ByteArrayInputStream(SerializedTransactionExceptions.ITE_DATA)); + InvalidTransactionException ex = (InvalidTransactionException) ois.readObject(); + assertTrue(reason.equals(ex.getMessage()) + && ex.getCause() == null); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/transaction/testng/test/transaction/TransactionRequiredExceptionTests.java Tue Oct 06 12:51:55 2015 -0700 @@ -0,0 +1,70 @@ +/* + * 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. + * + * 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 test.transaction; + +import java.io.ByteArrayInputStream; +import java.io.ObjectInputStream; +import javax.transaction.TransactionRequiredException; +import static org.testng.Assert.*; +import org.testng.annotations.Test; +import util.SerializedTransactionExceptions; + +public class TransactionRequiredExceptionTests { + + protected final String reason = "reason"; + + /** + * Create TransactionRequiredException with no-arg constructor + */ + @Test + public void test1() { + TransactionRequiredException ex = new TransactionRequiredException(); + assertTrue(ex.getMessage() == null + && ex.getCause() == null); + } + + /** + * Create TransactionRequiredException with message + */ + @Test + public void test2() { + TransactionRequiredException ex = new TransactionRequiredException(reason); + assertTrue(ex.getMessage().equals(reason) + && ex.getCause() == null); + } + + /** + * De-Serialize a TransactionRequiredException from JDBC 4.0 and make sure + * you can read it back properly + */ + @Test + public void test3() throws Exception { + + ObjectInputStream ois = new ObjectInputStream( + new ByteArrayInputStream(SerializedTransactionExceptions.TRE_DATA)); + TransactionRequiredException ex = (TransactionRequiredException) ois.readObject(); + assertTrue(reason.equals(ex.getMessage()) + && ex.getCause() == null); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/transaction/testng/test/transaction/TransactionRolledbackExceptionTests.java Tue Oct 06 12:51:55 2015 -0700 @@ -0,0 +1,70 @@ +/* + * 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. + * + * 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 test.transaction; + +import java.io.ByteArrayInputStream; +import java.io.ObjectInputStream; +import javax.transaction.TransactionRolledbackException; +import static org.testng.Assert.*; +import org.testng.annotations.Test; +import util.SerializedTransactionExceptions; + +public class TransactionRolledbackExceptionTests { + + protected final String reason = "reason"; + + /** + * Create TransactionRolledbackException with no-arg constructor + */ + @Test + public void test1() { + TransactionRolledbackException ex = new TransactionRolledbackException(); + assertTrue(ex.getMessage() == null + && ex.getCause() == null); + } + + /** + * Create TransactionRolledbackException with message + */ + @Test + public void test2() { + TransactionRolledbackException ex = new TransactionRolledbackException(reason); + assertTrue(ex.getMessage().equals(reason) + && ex.getCause() == null); + } + + /** + * De-Serialize a TransactionRolledbackException from JDBC 4.0 and make sure + * you can read it back properly + */ + @Test + public void test3() throws Exception { + + ObjectInputStream ois = new ObjectInputStream( + new ByteArrayInputStream(SerializedTransactionExceptions.TRBE_DATA)); + TransactionRolledbackException ex = (TransactionRolledbackException) ois.readObject(); + assertTrue(reason.equals(ex.getMessage()) + && ex.getCause() == null); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/transaction/testng/test/transaction/XAExceptionTests.java Tue Oct 06 12:51:55 2015 -0700 @@ -0,0 +1,98 @@ +/* + * 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. + * + * 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 test.transaction; + +import java.io.ByteArrayInputStream; +import java.io.ObjectInputStream; +import javax.transaction.xa.XAException; +import static org.testng.Assert.*; +import org.testng.annotations.Test; +import util.SerializedTransactionExceptions; + +public class XAExceptionTests { + + protected final String reason = "reason"; + + /** + * Create XAException with no-arg constructor + */ + @Test + public void test1() { + XAException ex = new XAException(); + assertTrue(ex.getMessage() == null + && ex.getCause() == null + && ex.errorCode == 0); + } + + /** + * Create XAException with message + */ + @Test + public void test2() { + XAException ex = new XAException(reason); + assertTrue(ex.getMessage().equals(reason) + && ex.getCause() == null + && ex.errorCode == 0); + } + + /** + * De-Serialize a XAException from JDBC 4.0 and make sure you can read it + * back properly + */ + @Test + public void test3() throws Exception { + + ObjectInputStream ois = new ObjectInputStream( + new ByteArrayInputStream(SerializedTransactionExceptions.XAE_DATA)); + XAException ex = (XAException) ois.readObject(); + assertTrue(reason.equals(ex.getMessage()) + && ex.getCause() == null + && ex.errorCode == 0); + } + + /** + * Create TransactionRolledbackException specifying an error code + */ + @Test + public void test4() { + int error = 21; + XAException ex = new XAException(error); + assertTrue(ex.getMessage() == null + && ex.getCause() == null + && ex.errorCode == error); + } + + /** + * Create TransactionRolledbackException specifying an error code + */ + @Test + public void test5() { + int error = 21; + XAException ex = new XAException(error); + ex.errorCode = error; + assertTrue(ex.getMessage() == null + && ex.getCause() == null + && ex.errorCode == error); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/transaction/testng/util/SerializedTransactionExceptions.java Tue Oct 06 12:51:55 2015 -0700 @@ -0,0 +1,167 @@ +/* + * 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. + * + * 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 util; + +public class SerializedTransactionExceptions { + + /** + * Serialized XAException from JDK 8 with the following values: + * reason = "This was the error msg" + * cause = null + */ + public static byte[] XAE_DATA = { + (byte) 0xac, (byte) 0xed, (byte) 0x0, (byte) 0x5, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x20, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2e, (byte) 0x74, (byte) 0x72, (byte) 0x61, (byte) 0x6e, (byte) 0x73, (byte) 0x61, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x2e, (byte) 0x78, (byte) 0x61, (byte) 0x2e, (byte) 0x58, (byte) 0x41, (byte) 0x45, + (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x8d, (byte) 0x83, (byte) 0x3c, (byte) 0xc2, (byte) 0xda, (byte) 0xf, (byte) 0x2a, (byte) 0x59, (byte) 0x2, (byte) 0x0, (byte) 0x1, (byte) 0x49, (byte) 0x0, (byte) 0x9, (byte) 0x65, (byte) 0x72, (byte) 0x72, (byte) 0x6f, (byte) 0x72, (byte) 0x43, (byte) 0x6f, (byte) 0x64, (byte) 0x65, (byte) 0x78, + (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0xd0, (byte) 0xfd, (byte) 0x1f, (byte) 0x3e, (byte) 0x1a, (byte) 0x3b, (byte) 0x1c, (byte) 0xc4, (byte) 0x2, (byte) 0x0, + (byte) 0x0, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x54, (byte) 0x68, (byte) 0x72, (byte) 0x6f, (byte) 0x77, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0xd5, (byte) 0xc6, (byte) 0x35, (byte) 0x27, (byte) 0x39, (byte) 0x77, (byte) 0xb8, (byte) 0xcb, + (byte) 0x3, (byte) 0x0, (byte) 0x4, (byte) 0x4c, (byte) 0x0, (byte) 0x5, (byte) 0x63, (byte) 0x61, (byte) 0x75, (byte) 0x73, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x15, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x54, (byte) 0x68, (byte) 0x72, (byte) 0x6f, (byte) 0x77, (byte) 0x61, (byte) 0x62, + (byte) 0x6c, (byte) 0x65, (byte) 0x3b, (byte) 0x4c, (byte) 0x0, (byte) 0xd, (byte) 0x64, (byte) 0x65, (byte) 0x74, (byte) 0x61, (byte) 0x69, (byte) 0x6c, (byte) 0x4d, (byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x61, (byte) 0x67, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x12, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, + (byte) 0x2f, (byte) 0x53, (byte) 0x74, (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x3b, (byte) 0x5b, (byte) 0x0, (byte) 0xa, (byte) 0x73, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x1e, (byte) 0x5b, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, + (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x3b, (byte) 0x4c, (byte) 0x0, (byte) 0x14, (byte) 0x73, (byte) 0x75, (byte) 0x70, (byte) 0x70, (byte) 0x72, (byte) 0x65, (byte) 0x73, + (byte) 0x73, (byte) 0x65, (byte) 0x64, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x74, (byte) 0x0, (byte) 0x10, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x3b, + (byte) 0x78, (byte) 0x70, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x7, (byte) 0x74, (byte) 0x0, (byte) 0x6, (byte) 0x72, (byte) 0x65, (byte) 0x61, (byte) 0x73, (byte) 0x6f, (byte) 0x6e, (byte) 0x75, (byte) 0x72, (byte) 0x0, (byte) 0x1e, (byte) 0x5b, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, + (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x3b, (byte) 0x2, (byte) 0x46, (byte) 0x2a, (byte) 0x3c, (byte) 0x3c, (byte) 0xfd, (byte) 0x22, (byte) 0x39, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x70, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x2, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x1b, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, + (byte) 0x6e, (byte) 0x74, (byte) 0x61, (byte) 0x9, (byte) 0xc5, (byte) 0x9a, (byte) 0x26, (byte) 0x36, (byte) 0xdd, (byte) 0x85, (byte) 0x2, (byte) 0x0, (byte) 0x4, (byte) 0x49, (byte) 0x0, (byte) 0xa, (byte) 0x6c, (byte) 0x69, (byte) 0x6e, (byte) 0x65, (byte) 0x4e, (byte) 0x75, (byte) 0x6d, (byte) 0x62, (byte) 0x65, (byte) 0x72, (byte) 0x4c, (byte) 0x0, (byte) 0xe, (byte) 0x64, (byte) 0x65, (byte) 0x63, + (byte) 0x6c, (byte) 0x61, (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x43, (byte) 0x6c, (byte) 0x61, (byte) 0x73, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x4, (byte) 0x4c, (byte) 0x0, (byte) 0x8, (byte) 0x66, (byte) 0x69, (byte) 0x6c, (byte) 0x65, (byte) 0x4e, (byte) 0x61, (byte) 0x6d, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x4, + (byte) 0x4c, (byte) 0x0, (byte) 0xa, (byte) 0x6d, (byte) 0x65, (byte) 0x74, (byte) 0x68, (byte) 0x6f, (byte) 0x64, (byte) 0x4e, (byte) 0x61, (byte) 0x6d, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x4, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x39, (byte) 0x74, (byte) 0x0, (byte) 0x10, (byte) 0x57, (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x65, + (byte) 0x53, (byte) 0x65, (byte) 0x72, (byte) 0x69, (byte) 0x61, (byte) 0x6c, (byte) 0x44, (byte) 0x61, (byte) 0x74, (byte) 0x61, (byte) 0x31, (byte) 0x74, (byte) 0x0, (byte) 0x15, (byte) 0x57, (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x65, (byte) 0x53, (byte) 0x65, (byte) 0x72, (byte) 0x69, (byte) 0x61, (byte) 0x6c, (byte) 0x44, (byte) 0x61, (byte) 0x74, (byte) 0x61, (byte) 0x31, (byte) 0x2e, (byte) 0x6a, + (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x74, (byte) 0x0, (byte) 0x3, (byte) 0x72, (byte) 0x75, (byte) 0x6e, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0xb, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x24, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0xd, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0xe, (byte) 0x74, (byte) 0x0, (byte) 0x4, + (byte) 0x6d, (byte) 0x61, (byte) 0x69, (byte) 0x6e, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x26, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2e, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x24, (byte) 0x55, (byte) 0x6e, + (byte) 0x6d, (byte) 0x6f, (byte) 0x64, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0xfc, (byte) 0xf, (byte) 0x25, (byte) 0x31, (byte) 0xb5, (byte) 0xec, (byte) 0x8e, (byte) 0x10, (byte) 0x2, (byte) 0x0, (byte) 0x1, (byte) 0x4c, (byte) 0x0, (byte) 0x4, (byte) 0x6c, (byte) 0x69, (byte) 0x73, (byte) 0x74, + (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x6, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x2c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2e, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x24, (byte) 0x55, + (byte) 0x6e, (byte) 0x6d, (byte) 0x6f, (byte) 0x64, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x19, (byte) 0x42, (byte) 0x0, (byte) 0x80, (byte) 0xcb, (byte) 0x5e, (byte) 0xf7, (byte) 0x1e, (byte) 0x2, (byte) 0x0, (byte) 0x1, + (byte) 0x4c, (byte) 0x0, (byte) 0x1, (byte) 0x63, (byte) 0x74, (byte) 0x0, (byte) 0x16, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x3b, (byte) 0x78, (byte) 0x70, (byte) 0x73, + (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2e, (byte) 0x41, (byte) 0x72, (byte) 0x72, (byte) 0x61, (byte) 0x79, (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x78, (byte) 0x81, (byte) 0xd2, (byte) 0x1d, (byte) 0x99, (byte) 0xc7, (byte) 0x61, (byte) 0x9d, (byte) 0x3, (byte) 0x0, + (byte) 0x1, (byte) 0x49, (byte) 0x0, (byte) 0x4, (byte) 0x73, (byte) 0x69, (byte) 0x7a, (byte) 0x65, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x77, (byte) 0x4, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x17, (byte) 0x78, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0 + }; + + /** + * Serialized InvalidTransactionException from JDK 8 with the following + * values: + * reason = "This was the error msg" + * cause = null + */ + public static byte[] ITE_DATA = { + (byte) 0xac, (byte) 0xed, (byte) 0x0, (byte) 0x5, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x2d, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2e, (byte) 0x74, (byte) 0x72, (byte) 0x61, (byte) 0x6e, (byte) 0x73, (byte) 0x61, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x2e, (byte) 0x49, (byte) 0x6e, (byte) 0x76, (byte) 0x61, (byte) 0x6c, (byte) 0x69, + (byte) 0x64, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x6e, (byte) 0x73, (byte) 0x61, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x31, (byte) 0xec, (byte) 0x3f, (byte) 0xae, (byte) 0x54, (byte) 0x8e, (byte) 0xdb, (byte) 0x68, (byte) 0x2, (byte) 0x0, (byte) 0x0, + (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x18, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x72, (byte) 0x6d, (byte) 0x69, (byte) 0x2e, (byte) 0x52, (byte) 0x65, (byte) 0x6d, (byte) 0x6f, (byte) 0x74, (byte) 0x65, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0xb8, (byte) 0x8c, (byte) 0x9d, (byte) 0x4e, + (byte) 0xde, (byte) 0xe4, (byte) 0x7a, (byte) 0x22, (byte) 0x2, (byte) 0x0, (byte) 0x1, (byte) 0x4c, (byte) 0x0, (byte) 0x6, (byte) 0x64, (byte) 0x65, (byte) 0x74, (byte) 0x61, (byte) 0x69, (byte) 0x6c, (byte) 0x74, (byte) 0x0, (byte) 0x15, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x54, (byte) 0x68, + (byte) 0x72, (byte) 0x6f, (byte) 0x77, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0x3b, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x69, (byte) 0x6f, (byte) 0x2e, (byte) 0x49, (byte) 0x4f, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x6c, + (byte) 0x80, (byte) 0x73, (byte) 0x64, (byte) 0x65, (byte) 0x25, (byte) 0xf0, (byte) 0xab, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, + (byte) 0x6e, (byte) 0xd0, (byte) 0xfd, (byte) 0x1f, (byte) 0x3e, (byte) 0x1a, (byte) 0x3b, (byte) 0x1c, (byte) 0xc4, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x54, (byte) 0x68, (byte) 0x72, (byte) 0x6f, (byte) 0x77, (byte) 0x61, + (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0xd5, (byte) 0xc6, (byte) 0x35, (byte) 0x27, (byte) 0x39, (byte) 0x77, (byte) 0xb8, (byte) 0xcb, (byte) 0x3, (byte) 0x0, (byte) 0x4, (byte) 0x4c, (byte) 0x0, (byte) 0x5, (byte) 0x63, (byte) 0x61, (byte) 0x75, (byte) 0x73, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x2, (byte) 0x4c, (byte) 0x0, (byte) 0xd, (byte) 0x64, (byte) 0x65, + (byte) 0x74, (byte) 0x61, (byte) 0x69, (byte) 0x6c, (byte) 0x4d, (byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x61, (byte) 0x67, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x12, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x53, (byte) 0x74, (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x3b, + (byte) 0x5b, (byte) 0x0, (byte) 0xa, (byte) 0x73, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x1e, (byte) 0x5b, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, + (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x3b, (byte) 0x4c, (byte) 0x0, (byte) 0x14, (byte) 0x73, (byte) 0x75, (byte) 0x70, (byte) 0x70, (byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x65, (byte) 0x64, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, + (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x74, (byte) 0x0, (byte) 0x10, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x3b, (byte) 0x78, (byte) 0x70, (byte) 0x70, (byte) 0x74, (byte) 0x0, (byte) 0x6, (byte) 0x72, (byte) 0x65, + (byte) 0x61, (byte) 0x73, (byte) 0x6f, (byte) 0x6e, (byte) 0x75, (byte) 0x72, (byte) 0x0, (byte) 0x1e, (byte) 0x5b, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, + (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x3b, (byte) 0x2, (byte) 0x46, (byte) 0x2a, (byte) 0x3c, (byte) 0x3c, (byte) 0xfd, (byte) 0x22, (byte) 0x39, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x2, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x1b, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, + (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x61, (byte) 0x9, (byte) 0xc5, (byte) 0x9a, (byte) 0x26, (byte) 0x36, (byte) 0xdd, (byte) 0x85, (byte) 0x2, (byte) 0x0, + (byte) 0x4, (byte) 0x49, (byte) 0x0, (byte) 0xa, (byte) 0x6c, (byte) 0x69, (byte) 0x6e, (byte) 0x65, (byte) 0x4e, (byte) 0x75, (byte) 0x6d, (byte) 0x62, (byte) 0x65, (byte) 0x72, (byte) 0x4c, (byte) 0x0, (byte) 0xe, (byte) 0x64, (byte) 0x65, (byte) 0x63, (byte) 0x6c, (byte) 0x61, (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x43, (byte) 0x6c, (byte) 0x61, (byte) 0x73, (byte) 0x73, (byte) 0x71, + (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x6, (byte) 0x4c, (byte) 0x0, (byte) 0x8, (byte) 0x66, (byte) 0x69, (byte) 0x6c, (byte) 0x65, (byte) 0x4e, (byte) 0x61, (byte) 0x6d, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x6, (byte) 0x4c, (byte) 0x0, (byte) 0xa, (byte) 0x6d, (byte) 0x65, (byte) 0x74, (byte) 0x68, (byte) 0x6f, (byte) 0x64, (byte) 0x4e, (byte) 0x61, (byte) 0x6d, + (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x6, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x3a, (byte) 0x74, (byte) 0x0, (byte) 0x10, (byte) 0x57, (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x65, (byte) 0x53, (byte) 0x65, (byte) 0x72, (byte) 0x69, (byte) 0x61, (byte) 0x6c, (byte) 0x44, (byte) 0x61, (byte) 0x74, (byte) 0x61, (byte) 0x31, (byte) 0x74, + (byte) 0x0, (byte) 0x15, (byte) 0x57, (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x65, (byte) 0x53, (byte) 0x65, (byte) 0x72, (byte) 0x69, (byte) 0x61, (byte) 0x6c, (byte) 0x44, (byte) 0x61, (byte) 0x74, (byte) 0x61, (byte) 0x31, (byte) 0x2e, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x74, (byte) 0x0, (byte) 0x3, (byte) 0x72, (byte) 0x75, (byte) 0x6e, (byte) 0x73, (byte) 0x71, (byte) 0x0, + (byte) 0x7e, (byte) 0x0, (byte) 0xd, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x24, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0xf, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x10, (byte) 0x74, (byte) 0x0, (byte) 0x4, (byte) 0x6d, (byte) 0x61, (byte) 0x69, (byte) 0x6e, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x26, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, + (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2e, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x24, (byte) 0x55, (byte) 0x6e, (byte) 0x6d, (byte) 0x6f, (byte) 0x64, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0x4c, (byte) 0x69, + (byte) 0x73, (byte) 0x74, (byte) 0xfc, (byte) 0xf, (byte) 0x25, (byte) 0x31, (byte) 0xb5, (byte) 0xec, (byte) 0x8e, (byte) 0x10, (byte) 0x2, (byte) 0x0, (byte) 0x1, (byte) 0x4c, (byte) 0x0, (byte) 0x4, (byte) 0x6c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x8, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x2c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, + (byte) 0x61, (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2e, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x24, (byte) 0x55, (byte) 0x6e, (byte) 0x6d, (byte) 0x6f, (byte) 0x64, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0x43, + (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x19, (byte) 0x42, (byte) 0x0, (byte) 0x80, (byte) 0xcb, (byte) 0x5e, (byte) 0xf7, (byte) 0x1e, (byte) 0x2, (byte) 0x0, (byte) 0x1, (byte) 0x4c, (byte) 0x0, (byte) 0x1, (byte) 0x63, (byte) 0x74, (byte) 0x0, (byte) 0x16, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, + (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x3b, (byte) 0x78, (byte) 0x70, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, + (byte) 0x2e, (byte) 0x41, (byte) 0x72, (byte) 0x72, (byte) 0x61, (byte) 0x79, (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x78, (byte) 0x81, (byte) 0xd2, (byte) 0x1d, (byte) 0x99, (byte) 0xc7, (byte) 0x61, (byte) 0x9d, (byte) 0x3, (byte) 0x0, (byte) 0x1, (byte) 0x49, (byte) 0x0, (byte) 0x4, (byte) 0x73, (byte) 0x69, (byte) 0x7a, (byte) 0x65, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x77, (byte) 0x4, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x19, (byte) 0x78, (byte) 0x70 + }; + + /** + * Serialized TransactionRequiredException from JDK 8 with the following + * values: + * reason = "This was the error msg" + * cause = null + */ + public static byte[] TRE_DATA = { + (byte) 0xac, (byte) 0xed, (byte) 0x0, (byte) 0x5, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x2e, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2e, (byte) 0x74, (byte) 0x72, (byte) 0x61, (byte) 0x6e, (byte) 0x73, (byte) 0x61, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x2e, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x6e, (byte) 0x73, (byte) 0x61, + (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x52, (byte) 0x65, (byte) 0x71, (byte) 0x75, (byte) 0x69, (byte) 0x72, (byte) 0x65, (byte) 0x64, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0xe5, (byte) 0xa6, (byte) 0x15, (byte) 0x9f, (byte) 0x12, (byte) 0x65, (byte) 0xb5, (byte) 0xd9, (byte) 0x2, (byte) 0x0, + (byte) 0x0, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x18, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x72, (byte) 0x6d, (byte) 0x69, (byte) 0x2e, (byte) 0x52, (byte) 0x65, (byte) 0x6d, (byte) 0x6f, (byte) 0x74, (byte) 0x65, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0xb8, (byte) 0x8c, (byte) 0x9d, + (byte) 0x4e, (byte) 0xde, (byte) 0xe4, (byte) 0x7a, (byte) 0x22, (byte) 0x2, (byte) 0x0, (byte) 0x1, (byte) 0x4c, (byte) 0x0, (byte) 0x6, (byte) 0x64, (byte) 0x65, (byte) 0x74, (byte) 0x61, (byte) 0x69, (byte) 0x6c, (byte) 0x74, (byte) 0x0, (byte) 0x15, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x54, + (byte) 0x68, (byte) 0x72, (byte) 0x6f, (byte) 0x77, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0x3b, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x69, (byte) 0x6f, (byte) 0x2e, (byte) 0x49, (byte) 0x4f, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, + (byte) 0x6c, (byte) 0x80, (byte) 0x73, (byte) 0x64, (byte) 0x65, (byte) 0x25, (byte) 0xf0, (byte) 0xab, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, + (byte) 0x6f, (byte) 0x6e, (byte) 0xd0, (byte) 0xfd, (byte) 0x1f, (byte) 0x3e, (byte) 0x1a, (byte) 0x3b, (byte) 0x1c, (byte) 0xc4, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x54, (byte) 0x68, (byte) 0x72, (byte) 0x6f, (byte) 0x77, + (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0xd5, (byte) 0xc6, (byte) 0x35, (byte) 0x27, (byte) 0x39, (byte) 0x77, (byte) 0xb8, (byte) 0xcb, (byte) 0x3, (byte) 0x0, (byte) 0x4, (byte) 0x4c, (byte) 0x0, (byte) 0x5, (byte) 0x63, (byte) 0x61, (byte) 0x75, (byte) 0x73, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x2, (byte) 0x4c, (byte) 0x0, (byte) 0xd, (byte) 0x64, + (byte) 0x65, (byte) 0x74, (byte) 0x61, (byte) 0x69, (byte) 0x6c, (byte) 0x4d, (byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x61, (byte) 0x67, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x12, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x53, (byte) 0x74, (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, + (byte) 0x3b, (byte) 0x5b, (byte) 0x0, (byte) 0xa, (byte) 0x73, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x1e, (byte) 0x5b, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x53, (byte) 0x74, (byte) 0x61, + (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x3b, (byte) 0x4c, (byte) 0x0, (byte) 0x14, (byte) 0x73, (byte) 0x75, (byte) 0x70, (byte) 0x70, (byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x65, (byte) 0x64, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, + (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x74, (byte) 0x0, (byte) 0x10, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x3b, (byte) 0x78, (byte) 0x70, (byte) 0x70, (byte) 0x74, (byte) 0x0, (byte) 0x6, (byte) 0x72, + (byte) 0x65, (byte) 0x61, (byte) 0x73, (byte) 0x6f, (byte) 0x6e, (byte) 0x75, (byte) 0x72, (byte) 0x0, (byte) 0x1e, (byte) 0x5b, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, + (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x3b, (byte) 0x2, (byte) 0x46, (byte) 0x2a, (byte) 0x3c, (byte) 0x3c, (byte) 0xfd, (byte) 0x22, (byte) 0x39, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x2, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x1b, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, + (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x61, (byte) 0x9, (byte) 0xc5, (byte) 0x9a, (byte) 0x26, (byte) 0x36, (byte) 0xdd, (byte) 0x85, (byte) 0x2, + (byte) 0x0, (byte) 0x4, (byte) 0x49, (byte) 0x0, (byte) 0xa, (byte) 0x6c, (byte) 0x69, (byte) 0x6e, (byte) 0x65, (byte) 0x4e, (byte) 0x75, (byte) 0x6d, (byte) 0x62, (byte) 0x65, (byte) 0x72, (byte) 0x4c, (byte) 0x0, (byte) 0xe, (byte) 0x64, (byte) 0x65, (byte) 0x63, (byte) 0x6c, (byte) 0x61, (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x43, (byte) 0x6c, (byte) 0x61, (byte) 0x73, (byte) 0x73, + (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x6, (byte) 0x4c, (byte) 0x0, (byte) 0x8, (byte) 0x66, (byte) 0x69, (byte) 0x6c, (byte) 0x65, (byte) 0x4e, (byte) 0x61, (byte) 0x6d, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x6, (byte) 0x4c, (byte) 0x0, (byte) 0xa, (byte) 0x6d, (byte) 0x65, (byte) 0x74, (byte) 0x68, (byte) 0x6f, (byte) 0x64, (byte) 0x4e, (byte) 0x61, + (byte) 0x6d, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x6, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x3c, (byte) 0x74, (byte) 0x0, (byte) 0x10, (byte) 0x57, (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x65, (byte) 0x53, (byte) 0x65, (byte) 0x72, (byte) 0x69, (byte) 0x61, (byte) 0x6c, (byte) 0x44, (byte) 0x61, (byte) 0x74, (byte) 0x61, (byte) 0x31, + (byte) 0x74, (byte) 0x0, (byte) 0x15, (byte) 0x57, (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x65, (byte) 0x53, (byte) 0x65, (byte) 0x72, (byte) 0x69, (byte) 0x61, (byte) 0x6c, (byte) 0x44, (byte) 0x61, (byte) 0x74, (byte) 0x61, (byte) 0x31, (byte) 0x2e, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x74, (byte) 0x0, (byte) 0x3, (byte) 0x72, (byte) 0x75, (byte) 0x6e, (byte) 0x73, (byte) 0x71, + (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0xd, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x24, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0xf, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x10, (byte) 0x74, (byte) 0x0, (byte) 0x4, (byte) 0x6d, (byte) 0x61, (byte) 0x69, (byte) 0x6e, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x26, (byte) 0x6a, (byte) 0x61, (byte) 0x76, + (byte) 0x61, (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2e, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x24, (byte) 0x55, (byte) 0x6e, (byte) 0x6d, (byte) 0x6f, (byte) 0x64, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0x4c, + (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0xfc, (byte) 0xf, (byte) 0x25, (byte) 0x31, (byte) 0xb5, (byte) 0xec, (byte) 0x8e, (byte) 0x10, (byte) 0x2, (byte) 0x0, (byte) 0x1, (byte) 0x4c, (byte) 0x0, (byte) 0x4, (byte) 0x6c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x8, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x2c, (byte) 0x6a, (byte) 0x61, + (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2e, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x24, (byte) 0x55, (byte) 0x6e, (byte) 0x6d, (byte) 0x6f, (byte) 0x64, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, + (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x19, (byte) 0x42, (byte) 0x0, (byte) 0x80, (byte) 0xcb, (byte) 0x5e, (byte) 0xf7, (byte) 0x1e, (byte) 0x2, (byte) 0x0, (byte) 0x1, (byte) 0x4c, (byte) 0x0, (byte) 0x1, (byte) 0x63, (byte) 0x74, (byte) 0x0, (byte) 0x16, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, + (byte) 0x61, (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x3b, (byte) 0x78, (byte) 0x70, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, + (byte) 0x6c, (byte) 0x2e, (byte) 0x41, (byte) 0x72, (byte) 0x72, (byte) 0x61, (byte) 0x79, (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x78, (byte) 0x81, (byte) 0xd2, (byte) 0x1d, (byte) 0x99, (byte) 0xc7, (byte) 0x61, (byte) 0x9d, (byte) 0x3, (byte) 0x0, (byte) 0x1, (byte) 0x49, (byte) 0x0, (byte) 0x4, (byte) 0x73, (byte) 0x69, (byte) 0x7a, (byte) 0x65, (byte) 0x78, (byte) 0x70, (byte) 0x0, + (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x77, (byte) 0x4, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x19, (byte) 0x78, (byte) 0x70 + }; + + /** + * Serialized TransactionRolledbackException from JDK 8 with the + * following values: + * reason = "This was the error msg" + * cause = null + */ + public static byte[] TRBE_DATA = { + (byte) 0xac, (byte) 0xed, (byte) 0x0, (byte) 0x5, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x30, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x78, (byte) 0x2e, (byte) 0x74, (byte) 0x72, (byte) 0x61, (byte) 0x6e, (byte) 0x73, (byte) 0x61, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x2e, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x6e, (byte) 0x73, (byte) 0x61, + (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x52, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x64, (byte) 0x62, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0xd4, (byte) 0x62, (byte) 0x89, (byte) 0xbe, (byte) 0x47, (byte) 0x2, (byte) 0xe7, (byte) 0xdf, + (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x18, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x72, (byte) 0x6d, (byte) 0x69, (byte) 0x2e, (byte) 0x52, (byte) 0x65, (byte) 0x6d, (byte) 0x6f, (byte) 0x74, (byte) 0x65, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0xb8, + (byte) 0x8c, (byte) 0x9d, (byte) 0x4e, (byte) 0xde, (byte) 0xe4, (byte) 0x7a, (byte) 0x22, (byte) 0x2, (byte) 0x0, (byte) 0x1, (byte) 0x4c, (byte) 0x0, (byte) 0x6, (byte) 0x64, (byte) 0x65, (byte) 0x74, (byte) 0x61, (byte) 0x69, (byte) 0x6c, (byte) 0x74, (byte) 0x0, (byte) 0x15, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, + (byte) 0x2f, (byte) 0x54, (byte) 0x68, (byte) 0x72, (byte) 0x6f, (byte) 0x77, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0x3b, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x69, (byte) 0x6f, (byte) 0x2e, (byte) 0x49, (byte) 0x4f, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, + (byte) 0x6f, (byte) 0x6e, (byte) 0x6c, (byte) 0x80, (byte) 0x73, (byte) 0x64, (byte) 0x65, (byte) 0x25, (byte) 0xf0, (byte) 0xab, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x45, (byte) 0x78, (byte) 0x63, (byte) 0x65, (byte) 0x70, + (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0xd0, (byte) 0xfd, (byte) 0x1f, (byte) 0x3e, (byte) 0x1a, (byte) 0x3b, (byte) 0x1c, (byte) 0xc4, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x54, (byte) 0x68, (byte) 0x72, + (byte) 0x6f, (byte) 0x77, (byte) 0x61, (byte) 0x62, (byte) 0x6c, (byte) 0x65, (byte) 0xd5, (byte) 0xc6, (byte) 0x35, (byte) 0x27, (byte) 0x39, (byte) 0x77, (byte) 0xb8, (byte) 0xcb, (byte) 0x3, (byte) 0x0, (byte) 0x4, (byte) 0x4c, (byte) 0x0, (byte) 0x5, (byte) 0x63, (byte) 0x61, (byte) 0x75, (byte) 0x73, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x2, (byte) 0x4c, (byte) 0x0, + (byte) 0xd, (byte) 0x64, (byte) 0x65, (byte) 0x74, (byte) 0x61, (byte) 0x69, (byte) 0x6c, (byte) 0x4d, (byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x61, (byte) 0x67, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x12, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x53, (byte) 0x74, (byte) 0x72, (byte) 0x69, + (byte) 0x6e, (byte) 0x67, (byte) 0x3b, (byte) 0x5b, (byte) 0x0, (byte) 0xa, (byte) 0x73, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x74, (byte) 0x0, (byte) 0x1e, (byte) 0x5b, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2f, (byte) 0x53, + (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x3b, (byte) 0x4c, (byte) 0x0, (byte) 0x14, (byte) 0x73, (byte) 0x75, (byte) 0x70, (byte) 0x70, (byte) 0x72, (byte) 0x65, (byte) 0x73, (byte) 0x73, (byte) 0x65, (byte) 0x64, (byte) 0x45, (byte) 0x78, + (byte) 0x63, (byte) 0x65, (byte) 0x70, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x74, (byte) 0x0, (byte) 0x10, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x3b, (byte) 0x78, (byte) 0x70, (byte) 0x70, (byte) 0x74, (byte) 0x0, + (byte) 0x6, (byte) 0x72, (byte) 0x65, (byte) 0x61, (byte) 0x73, (byte) 0x6f, (byte) 0x6e, (byte) 0x75, (byte) 0x72, (byte) 0x0, (byte) 0x1e, (byte) 0x5b, (byte) 0x4c, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, + (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x3b, (byte) 0x2, (byte) 0x46, (byte) 0x2a, (byte) 0x3c, (byte) 0x3c, (byte) 0xfd, (byte) 0x22, (byte) 0x39, (byte) 0x2, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x2, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x1b, (byte) 0x6a, (byte) 0x61, + (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x6c, (byte) 0x61, (byte) 0x6e, (byte) 0x67, (byte) 0x2e, (byte) 0x53, (byte) 0x74, (byte) 0x61, (byte) 0x63, (byte) 0x6b, (byte) 0x54, (byte) 0x72, (byte) 0x61, (byte) 0x63, (byte) 0x65, (byte) 0x45, (byte) 0x6c, (byte) 0x65, (byte) 0x6d, (byte) 0x65, (byte) 0x6e, (byte) 0x74, (byte) 0x61, (byte) 0x9, (byte) 0xc5, (byte) 0x9a, (byte) 0x26, (byte) 0x36, (byte) 0xdd, + (byte) 0x85, (byte) 0x2, (byte) 0x0, (byte) 0x4, (byte) 0x49, (byte) 0x0, (byte) 0xa, (byte) 0x6c, (byte) 0x69, (byte) 0x6e, (byte) 0x65, (byte) 0x4e, (byte) 0x75, (byte) 0x6d, (byte) 0x62, (byte) 0x65, (byte) 0x72, (byte) 0x4c, (byte) 0x0, (byte) 0xe, (byte) 0x64, (byte) 0x65, (byte) 0x63, (byte) 0x6c, (byte) 0x61, (byte) 0x72, (byte) 0x69, (byte) 0x6e, (byte) 0x67, (byte) 0x43, (byte) 0x6c, (byte) 0x61, + (byte) 0x73, (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x6, (byte) 0x4c, (byte) 0x0, (byte) 0x8, (byte) 0x66, (byte) 0x69, (byte) 0x6c, (byte) 0x65, (byte) 0x4e, (byte) 0x61, (byte) 0x6d, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x6, (byte) 0x4c, (byte) 0x0, (byte) 0xa, (byte) 0x6d, (byte) 0x65, (byte) 0x74, (byte) 0x68, (byte) 0x6f, (byte) 0x64, + (byte) 0x4e, (byte) 0x61, (byte) 0x6d, (byte) 0x65, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x6, (byte) 0x78, (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x3e, (byte) 0x74, (byte) 0x0, (byte) 0x10, (byte) 0x57, (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x65, (byte) 0x53, (byte) 0x65, (byte) 0x72, (byte) 0x69, (byte) 0x61, (byte) 0x6c, (byte) 0x44, (byte) 0x61, (byte) 0x74, + (byte) 0x61, (byte) 0x31, (byte) 0x74, (byte) 0x0, (byte) 0x15, (byte) 0x57, (byte) 0x72, (byte) 0x69, (byte) 0x74, (byte) 0x65, (byte) 0x53, (byte) 0x65, (byte) 0x72, (byte) 0x69, (byte) 0x61, (byte) 0x6c, (byte) 0x44, (byte) 0x61, (byte) 0x74, (byte) 0x61, (byte) 0x31, (byte) 0x2e, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x74, (byte) 0x0, (byte) 0x3, (byte) 0x72, (byte) 0x75, (byte) 0x6e, + (byte) 0x73, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0xd, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x24, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0xf, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x10, (byte) 0x74, (byte) 0x0, (byte) 0x4, (byte) 0x6d, (byte) 0x61, (byte) 0x69, (byte) 0x6e, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x26, (byte) 0x6a, + (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2e, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x24, (byte) 0x55, (byte) 0x6e, (byte) 0x6d, (byte) 0x6f, (byte) 0x64, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x61, (byte) 0x62, (byte) 0x6c, + (byte) 0x65, (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0xfc, (byte) 0xf, (byte) 0x25, (byte) 0x31, (byte) 0xb5, (byte) 0xec, (byte) 0x8e, (byte) 0x10, (byte) 0x2, (byte) 0x0, (byte) 0x1, (byte) 0x4c, (byte) 0x0, (byte) 0x4, (byte) 0x6c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x8, (byte) 0x78, (byte) 0x72, (byte) 0x0, (byte) 0x2c, + (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2e, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x73, (byte) 0x24, (byte) 0x55, (byte) 0x6e, (byte) 0x6d, (byte) 0x6f, (byte) 0x64, (byte) 0x69, (byte) 0x66, (byte) 0x69, (byte) 0x61, (byte) 0x62, + (byte) 0x6c, (byte) 0x65, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x19, (byte) 0x42, (byte) 0x0, (byte) 0x80, (byte) 0xcb, (byte) 0x5e, (byte) 0xf7, (byte) 0x1e, (byte) 0x2, (byte) 0x0, (byte) 0x1, (byte) 0x4c, (byte) 0x0, (byte) 0x1, (byte) 0x63, (byte) 0x74, (byte) 0x0, (byte) 0x16, (byte) 0x4c, (byte) 0x6a, + (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2f, (byte) 0x75, (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2f, (byte) 0x43, (byte) 0x6f, (byte) 0x6c, (byte) 0x6c, (byte) 0x65, (byte) 0x63, (byte) 0x74, (byte) 0x69, (byte) 0x6f, (byte) 0x6e, (byte) 0x3b, (byte) 0x78, (byte) 0x70, (byte) 0x73, (byte) 0x72, (byte) 0x0, (byte) 0x13, (byte) 0x6a, (byte) 0x61, (byte) 0x76, (byte) 0x61, (byte) 0x2e, (byte) 0x75, + (byte) 0x74, (byte) 0x69, (byte) 0x6c, (byte) 0x2e, (byte) 0x41, (byte) 0x72, (byte) 0x72, (byte) 0x61, (byte) 0x79, (byte) 0x4c, (byte) 0x69, (byte) 0x73, (byte) 0x74, (byte) 0x78, (byte) 0x81, (byte) 0xd2, (byte) 0x1d, (byte) 0x99, (byte) 0xc7, (byte) 0x61, (byte) 0x9d, (byte) 0x3, (byte) 0x0, (byte) 0x1, (byte) 0x49, (byte) 0x0, (byte) 0x4, (byte) 0x73, (byte) 0x69, (byte) 0x7a, (byte) 0x65, (byte) 0x78, + (byte) 0x70, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x77, (byte) 0x4, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x78, (byte) 0x71, (byte) 0x0, (byte) 0x7e, (byte) 0x0, (byte) 0x19, (byte) 0x78, (byte) 0x70 + }; + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/net/www/http/HttpURLConnection/NTLMAuthWithSM.java Tue Oct 06 12:51:55 2015 -0700 @@ -0,0 +1,183 @@ +/* + * 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. + * + * 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. + */ + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; +import com.sun.net.httpserver.HttpServer; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.IOException; +import java.io.InputStream; +import java.net.Authenticator; +import java.net.InetSocketAddress; +import java.net.PasswordAuthentication; +import java.net.URL; +import java.net.URLConnection; +import java.util.List; +import sun.net.www.protocol.http.ntlm.NTLMAuthenticationCallback; + +/* + * @test + * @bug 8137174 + * @summary Checks if NTLM auth works fine if security manager set + * @run main/othervm/java.security.policy=NTLMAuthWithSM.policy NTLMAuthWithSM + */ +public class NTLMAuthWithSM { + + public static void main(String[] args) throws Exception { + // security manager is required + if (System.getSecurityManager() == null) { + throw new RuntimeException("Security manager not specified"); + } + + if (System.getProperty("os.name").startsWith("Windows")) { + // disable transparent NTLM authentication on Windows + NTLMAuthenticationCallback.setNTLMAuthenticationCallback( + new NTLMAuthenticationCallbackImpl()); + } + + try (LocalHttpServer server = LocalHttpServer.startServer()) { + // set authenticator + Authenticator.setDefault(new AuthenticatorImpl()); + + String url = String.format("http://localhost:%d/test/", + server.getPort()); + + // load a document which is protected with NTML authentication + System.out.println("load() called: " + url); + URLConnection conn = new URL(url).openConnection(); + try (BufferedReader reader = new BufferedReader( + new InputStreamReader(conn.getInputStream()))) { + + String line = reader.readLine(); + if (line == null) { + throw new IOException("Couldn't read a response"); + } + do { + System.out.println(line); + } while ((line = reader.readLine()) != null); + } + } + + System.out.println("Test passed"); + } + + private static class AuthenticatorImpl extends Authenticator { + + @Override + public PasswordAuthentication getPasswordAuthentication() { + System.out.println("getPasswordAuthentication() called, scheme: " + + getRequestingScheme()); + if (getRequestingScheme().equalsIgnoreCase("ntlm")) { + return new PasswordAuthentication("test", "test".toCharArray()); + } + return null; + } + } + + // local http server which pretends to support NTLM auth + static class LocalHttpServer implements HttpHandler, AutoCloseable { + + private final HttpServer server; + + private LocalHttpServer(HttpServer server) { + this.server = server; + } + + static LocalHttpServer startServer() throws IOException { + HttpServer httpServer = HttpServer.create( + new InetSocketAddress(0), 0); + LocalHttpServer localHttpServer = new LocalHttpServer(httpServer); + localHttpServer.start(); + + return localHttpServer; + } + + void start() { + server.createContext("/test", this); + server.start(); + System.out.println("HttpServer: started on port " + getPort()); + } + + void stop() { + server.stop(0); + System.out.println("HttpServer: stopped"); + } + + int getPort() { + return server.getAddress().getPort(); + } + + @Override + public void handle(HttpExchange t) throws IOException { + System.out.println("HttpServer: handle connection"); + + // read a request + try (InputStream is = t.getRequestBody()) { + while (is.read() > 0); + } + + try { + List<String> headers = t.getRequestHeaders() + .get("Authorization"); + if (headers != null && !headers.isEmpty() + && headers.get(0).trim().contains("NTLM")) { + byte[] output = "hello".getBytes(); + t.sendResponseHeaders(200, output.length); + t.getResponseBody().write(output); + System.out.println("HttpServer: return 200"); + } else { + t.getResponseHeaders().set("WWW-Authenticate", "NTLM"); + byte[] output = "forbidden".getBytes(); + t.sendResponseHeaders(401, output.length); + t.getResponseBody().write(output); + System.out.println("HttpServer: return 401"); + } + } catch (IOException e) { + System.out.println("HttpServer: exception: " + e); + System.out.println("HttpServer: return 500"); + t.sendResponseHeaders(500, 0); + } finally { + t.close(); + } + } + + @Override + public void close() { + stop(); + } + } + + private static class NTLMAuthenticationCallbackImpl + extends NTLMAuthenticationCallback { + + // don't trust any site, so that no transparent NTLM auth happens + @Override + public boolean isTrustedSite(URL url) { + System.out.println( + "NTLMAuthenticationCallbackImpl.isTrustedSite() called: " + + "return false"); + return false; + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/sun/net/www/http/HttpURLConnection/NTLMAuthWithSM.policy Tue Oct 06 12:51:55 2015 -0700 @@ -0,0 +1,7 @@ +grant { + permission java.net.NetPermission "setDefaultAuthenticator"; + permission java.net.SocketPermission "localhost:*", + "connect,resolve,listen,accept"; + permission java.lang.RuntimePermission + "accessClassInPackage.sun.net.www.protocol.http.ntlm"; +};
--- a/jdk/test/sun/security/krb5/auto/tools/KinitConfPlusProps.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/sun/security/krb5/auto/tools/KinitConfPlusProps.java Tue Oct 06 12:51:55 2015 -0700 @@ -22,7 +22,6 @@ */ import java.io.File; -import java.net.PortUnreachableException; import java.util.HashMap; import java.util.Map; import jdk.testlibrary.ProcessTools; @@ -86,7 +85,6 @@ try { OutputAnalyzer out = ProcessTools.executeCommand(command); out.shouldHaveExitValue(-1); - out.shouldContain(PortUnreachableException.class.getName()); } catch(Throwable e) { System.out.println("Unexpected exception: " + e); e.printStackTrace(System.out);
--- a/jdk/test/sun/util/calendar/zi/tzdata/VERSION Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/sun/util/calendar/zi/tzdata/VERSION Tue Oct 06 12:51:55 2015 -0700 @@ -21,4 +21,4 @@ # or visit www.oracle.com if you need additional information or have any # questions. # -tzdata2015f +tzdata2015g
--- a/jdk/test/sun/util/calendar/zi/tzdata/asia Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/sun/util/calendar/zi/tzdata/asia Tue Oct 06 12:51:55 2015 -0700 @@ -154,7 +154,8 @@ # Azerbaijan # From Rustam Aliyev of the Azerbaijan Internet Forum (2005-10-23): # According to the resolution of Cabinet of Ministers, 1997 -# Resolution available at: http://aif.az/docs/daylight_res.pdf +# From Paul Eggert (2015-09-17): It was Resolution No. 21 (1997-03-17). +# http://code.az/files/daylight_res.pdf # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Azer 1997 max - Mar lastSun 4:00 1:00 S Rule Azer 1997 max - Oct lastSun 5:00 0 - @@ -1740,11 +1741,12 @@ # the 8:30 time zone on August 15, one example: # http://www.bbc.com/news/world-asia-33815049 # -# From Paul Eggert (2015-08-07): -# No transition time is specified; assume 00:00. +# From Paul Eggert (2015-08-15): +# Bells rang out midnight (00:00) Friday as part of the celebrations. See: +# Talmadge E. North Korea celebrates new time zone, 'Pyongyang Time' +# http://news.yahoo.com/north-korea-celebrates-time-zone-pyongyang-time-164038128.html # There is no common English-language abbreviation for this time zone. -# Use %z rather than invent one. We can't assume %z works everywhere yet, -# so for now substitute its output manually. +# Use KST, as that's what we already use for 1954-1961 in ROK. # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Asia/Seoul 8:27:52 - LMT 1908 Apr 1 @@ -1758,7 +1760,7 @@ 8:30 - KST 1912 Jan 1 9:00 - JCST 1937 Oct 1 9:00 - JST 1945 Aug 24 - 9:00 - KST 2015 Aug 15 + 9:00 - KST 2015 Aug 15 00:00 8:30 - KST ###############################################################################
--- a/jdk/test/sun/util/calendar/zi/tzdata/australasia Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/sun/util/calendar/zi/tzdata/australasia Tue Oct 06 12:51:55 2015 -0700 @@ -358,10 +358,17 @@ # DST will start Nov. 2 this year. # http://www.fiji.gov.fj/Media-Center/Press-Releases/DAYLIGHT-SAVING-STARTS-ON-SUNDAY,-NOVEMBER-2ND.aspx -# From Paul Eggert (2014-10-20): +# From a government order dated 2015-08-26 and published as Legal Notice No. 77 +# in the Government of Fiji Gazette Supplement No. 24 (2015-08-28), +# via Ken Rylander (2015-09-02): +# the daylight saving period is 1 hour in advance of the standard time +# commencing at 2.00 am on Sunday 1st November, 2015 and ending at +# 3.00 am on Sunday 17th January, 2016. + +# From Paul Eggert (2015-09-01): # For now, guess DST from 02:00 the first Sunday in November to -# 03:00 the first Sunday on or after January 18. Although ad hoc, it -# matches this year's plan and seems more likely to match future +# 03:00 the third Sunday in January. Although ad hoc, it matches +# transitions since late 2014 and seems more likely to match future # practice than guessing no DST. # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S @@ -374,7 +381,7 @@ Rule Fiji 2012 2013 - Jan Sun>=18 3:00 0 - Rule Fiji 2014 only - Jan Sun>=18 2:00 0 - Rule Fiji 2014 max - Nov Sun>=1 2:00 1:00 S -Rule Fiji 2015 max - Jan Sun>=18 3:00 0 - +Rule Fiji 2015 max - Jan Sun>=15 3:00 0 - # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Fiji 11:55:44 - LMT 1915 Oct 26 # Suva 12:00 Fiji FJ%sT # Fiji Time @@ -533,7 +540,10 @@ # Zone NAME GMTOFF RULES FORMAT [UNTIL] Zone Pacific/Norfolk 11:11:52 - LMT 1901 # Kingston 11:12 - NMT 1951 # Norfolk Mean Time - 11:30 - NFT # Norfolk Time + 11:30 - NFT 1974 Oct 27 02:00 # Norfolk T. + 11:30 1:00 NFST 1975 Mar 2 02:00 + 11:30 - NFT 2015 Oct 4 02:00 + 11:00 - NFT # Palau (Belau) # Zone NAME GMTOFF RULES FORMAT [UNTIL] @@ -1573,6 +1583,20 @@ # started DST on June 3. Possibly DST was observed other years # in Midway, but we have no record of it. +# Norfolk + +# From Alexander Krivenyshev (2015-09-23): +# Norfolk Island will change ... from +1130 to +1100: +# https://www.comlaw.gov.au/Details/F2015L01483/Explanatory%20Statement/Text +# ... at 12.30 am (by legal time in New South Wales) on 4 October 2015. +# http://www.norfolkisland.gov.nf/nia/MediaRelease/Media%20Release%20Norfolk%20Island%20Standard%20Time%20Change.pdf + +# From Paul Eggert (2015-09-23): +# Transitions before 2015 are from timeanddate.com, which consulted +# the Norfolk Island Museum and the Australian Bureau of Meteorology's +# Norfolk Island station, and found no record of Norfolk observing DST +# other than in 1974/5. See: +# http://www.timeanddate.com/time/australia/norfolk-island.html # Pitcairn
--- a/jdk/test/sun/util/calendar/zi/tzdata/europe Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/sun/util/calendar/zi/tzdata/europe Tue Oct 06 12:51:55 2015 -0700 @@ -3173,6 +3173,11 @@ # http://www.balkaneu.com/eventful-elections-turkey/ 2014-03-30. # I guess the best we can do is document the official time. +# From Fatih (2015-09-29): +# It's officially announced now by the Ministry of Energy. +# Turkey delays winter time to 8th of November 04:00 +# http://www.aa.com.tr/tr/turkiye/yaz-saati-uygulamasi-8-kasimda-sona-erecek/362217 + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Turkey 1916 only - May 1 0:00 1:00 S Rule Turkey 1916 only - Oct 1 0:00 0 - @@ -3242,6 +3247,8 @@ 2:00 - EET 2011 Mar 28 1:00u 2:00 EU EE%sT 2014 Mar 30 1:00u 2:00 - EET 2014 Mar 31 1:00u + 2:00 EU EE%sT 2015 Oct 25 1:00u + 2:00 1:00 EEST 2015 Nov 8 1:00u 2:00 EU EE%sT Link Europe/Istanbul Asia/Istanbul # Istanbul is in both continents.
--- a/jdk/test/sun/util/calendar/zi/tzdata/northamerica Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/sun/util/calendar/zi/tzdata/northamerica Tue Oct 06 12:51:55 2015 -0700 @@ -1849,6 +1849,22 @@ # The transition dates (and times) are guesses. +# From Matt Johnson (2015-09-21): +# Fort Nelson, BC, Canada will cancel DST this year. So while previously they +# were aligned with America/Vancouver, they're now aligned with +# America/Dawson_Creek. +# http://www.northernrockies.ca/EN/meta/news/archives/2015/northern-rockies-time-change.html +# +# From Tim Parenti (2015-09-23): +# This requires a new zone for the Northern Rockies Regional Municipality, +# America/Fort_Nelson. The resolution of 2014-12-08 was reached following a +# 2014-11-15 poll with nearly 75% support. Effectively, the municipality has +# been on MST (-0700) like Dawson Creek since it advanced its clocks on +# 2015-03-08. +# +# From Paul Eggert (2015-09-23): +# Shanks says Fort Nelson did not observe DST in 1946, unlike Vancouver. + # Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Vanc 1918 only - Apr 14 2:00 1:00 D Rule Vanc 1918 only - Oct 27 2:00 0 S @@ -1867,6 +1883,12 @@ -8:00 Canada P%sT 1947 -8:00 Vanc P%sT 1972 Aug 30 2:00 -7:00 - MST +Zone America/Fort_Nelson -8:10:47 - LMT 1884 + -8:00 Vanc P%sT 1946 + -8:00 - PST 1947 + -8:00 Vanc P%sT 1987 + -8:00 Canada P%sT 2015 Mar 8 2:00 + -7:00 - MST Zone America/Creston -7:46:04 - LMT 1884 -7:00 - MST 1916 Oct 1 -8:00 - PST 1918 Jun 2
--- a/jdk/test/sun/util/calendar/zi/tzdata/zone.tab Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/sun/util/calendar/zi/tzdata/zone.tab Tue Oct 06 12:51:55 2015 -0700 @@ -152,6 +152,7 @@ CA +682059-1334300 America/Inuvik Mountain Time - west Northwest Territories CA +4906-11631 America/Creston Mountain Standard Time - Creston, British Columbia CA +5946-12014 America/Dawson_Creek Mountain Standard Time - Dawson Creek & Fort Saint John, British Columbia +CA +5848-12242 America/Fort_Nelson Mountain Standard Time - Fort Nelson, British Columbia CA +4916-12307 America/Vancouver Pacific Time - west British Columbia CA +6043-13503 America/Whitehorse Pacific Time - south Yukon CA +6404-13925 America/Dawson Pacific Time - north Yukon
--- a/jdk/test/tools/pack200/Pack200Props.java Tue Oct 06 10:24:12 2015 +0300 +++ b/jdk/test/tools/pack200/Pack200Props.java Tue Oct 06 12:51:55 2015 -0700 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2010, 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 @@ -88,8 +88,6 @@ private static void verifyDefaults() { Map<String, String> expectedDefaults = new HashMap<>(); Packer p = Pack200.newPacker(); - expectedDefaults.put("com.sun.java.util.jar.pack.default.timezone", - p.FALSE); expectedDefaults.put("com.sun.java.util.jar.pack.disable.native", p.FALSE); expectedDefaults.put("com.sun.java.util.jar.pack.verbose", "0");