changeset 29077:c498e89c707d

Merge
author ctornqvi
date Wed, 18 Feb 2015 19:27:49 -0800
parents 4a5f7c1e6ed7 8d8f9907083d
children 7b01b134b727
files jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/Aspect.java jdk/src/java.management/share/classes/java/lang/management/PlatformComponent.java jdk/src/java.management/share/classes/sun/management/ExtendedPlatformComponent.java jdk/src/java.security.acl/share/classes/java/security/acl/Acl.java jdk/src/java.security.acl/share/classes/java/security/acl/AclEntry.java jdk/src/java.security.acl/share/classes/java/security/acl/AclNotFoundException.java jdk/src/java.security.acl/share/classes/java/security/acl/Group.java jdk/src/java.security.acl/share/classes/java/security/acl/LastOwnerException.java jdk/src/java.security.acl/share/classes/java/security/acl/NotOwnerException.java jdk/src/java.security.acl/share/classes/java/security/acl/Owner.java jdk/src/java.security.acl/share/classes/java/security/acl/Permission.java jdk/src/java.security.acl/share/classes/java/security/acl/package-info.java jdk/src/java.security.acl/share/classes/sun/security/acl/AclEntryImpl.java jdk/src/java.security.acl/share/classes/sun/security/acl/AclImpl.java jdk/src/java.security.acl/share/classes/sun/security/acl/AllPermissionsImpl.java jdk/src/java.security.acl/share/classes/sun/security/acl/GroupImpl.java jdk/src/java.security.acl/share/classes/sun/security/acl/OwnerImpl.java jdk/src/java.security.acl/share/classes/sun/security/acl/PermissionImpl.java jdk/src/java.security.acl/share/classes/sun/security/acl/PrincipalImpl.java jdk/src/java.security.acl/share/classes/sun/security/acl/WorldGroupImpl.java
diffstat 367 files changed, 11452 insertions(+), 5093 deletions(-) [+]
line wrap: on
line diff
--- a/.hgtags	Tue Feb 17 13:19:23 2015 -0500
+++ b/.hgtags	Wed Feb 18 19:27:49 2015 -0800
@@ -291,3 +291,5 @@
 722378bc599e38d9a1dd484de30f10dfd7b21438 jdk9-b46
 8327024a99559982b848e9c2191da9c0bf8838fd jdk9-b47
 b2f9702efbe95527ea3a991474fda23987ff1c5c jdk9-b48
+5b8db585a33c3cc48e70e688ceee57dd9271dc5d jdk9-b49
+1550b2f6b63d1411fa84dc7bbc6f04809aedb43f jdk9-b50
--- a/.hgtags-top-repo	Tue Feb 17 13:19:23 2015 -0500
+++ b/.hgtags-top-repo	Wed Feb 18 19:27:49 2015 -0800
@@ -291,3 +291,5 @@
 12f1e276447bcc81516e85367d53e4f08897049d jdk9-b46
 b6cca3e6175a69f39e5799b7349ddb0176630291 jdk9-b47
 0064e246d83f6f9fc245c19b6d05041ecaf4b6d4 jdk9-b48
+d91ed1951b948210590ce1394bea5515357246ba jdk9-b49
+d1f37d39ff2421f956a6ddf316cf763807bc3363 jdk9-b50
--- a/README-builds.html	Tue Feb 17 13:19:23 2015 -0500
+++ b/README-builds.html	Wed Feb 18 19:27:49 2015 -0800
@@ -1463,14 +1463,13 @@
 
                 <h4>Building with ccache</h4>
 
-                <p>A simple way to radically speed up compilation of native code
-                    (typically hotspot and native libraries in JDK) is to install
-                    ccache. This will cache and reuse prior compilation results, if the
-                    source code is unchanged. However, ccache versions prior to 3.1.4
-                    does not work correctly with the precompiled headers used in
-                    OpenJDK. So if your platform supports ccache at 3.1.4 or later, we
-                    highly recommend installing it. This is currently only supported on
-                    linux.</p> 
+                <p>The OpenJDK build supports building with ccache 
+                    when using gcc or clang. Using ccache can
+                    radically speed up compilation of native code if
+                    you often rebuild the same sources. Your milage
+                    may vary however so we recommend evaluating it for
+                    yourself. To enable it, make sure it's on the path
+                    and configure with <code>--enable-ccache</code>.</p> 
 
                 <h4>Building on local disk</h4>
 
--- a/common/autoconf/basics.m4	Tue Feb 17 13:19:23 2015 -0500
+++ b/common/autoconf/basics.m4	Wed Feb 18 19:27:49 2015 -0800
@@ -242,6 +242,9 @@
 [
   # Save the original command line. This is passed to us by the wrapper configure script.
   AC_SUBST(CONFIGURE_COMMAND_LINE)
+  # Save the path variable before it gets changed
+  ORIGINAL_PATH="$PATH"
+  AC_SUBST(ORIGINAL_PATH)
   DATE_WHEN_CONFIGURED=`LANG=C date`
   AC_SUBST(DATE_WHEN_CONFIGURED)
   AC_MSG_NOTICE([Configuration created at $DATE_WHEN_CONFIGURED.])
--- a/common/autoconf/build-performance.m4	Tue Feb 17 13:19:23 2015 -0500
+++ b/common/autoconf/build-performance.m4	Wed Feb 18 19:27:49 2015 -0800
@@ -164,19 +164,26 @@
       [enable using ccache to speed up recompilations @<:@disabled@:>@])])
 
   CCACHE=
+  CCACHE_STATUS=
   AC_MSG_CHECKING([is ccache enabled])
-  ENABLE_CCACHE=$enable_ccache
   if test "x$enable_ccache" = xyes; then
-    AC_MSG_RESULT([yes])
-    OLD_PATH="$PATH"
-    if test "x$TOOLCHAIN_PATH" != x; then
-      PATH=$TOOLCHAIN_PATH:$PATH
+    if test "x$TOOLCHAIN_TYPE" = "xgcc" -o "x$TOOLCHAIN_TYPE" = "xclang"; then
+      AC_MSG_RESULT([yes])
+      OLD_PATH="$PATH"
+      if test "x$TOOLCHAIN_PATH" != x; then
+        PATH=$TOOLCHAIN_PATH:$PATH
+      fi
+      BASIC_REQUIRE_PROGS(CCACHE, ccache)
+      PATH="$OLD_PATH"
+      CCACHE_VERSION=[`$CCACHE --version | head -n1 | $SED 's/[A-Za-z ]*//'`]
+      CCACHE_STATUS="Active ($CCACHE_VERSION)"
+    else
+      AC_MSG_RESULT([no])
+      AC_MSG_WARN([ccache is not supported with toolchain type $TOOLCHAIN_TYPE])
     fi
-    BASIC_REQUIRE_PROGS(CCACHE, ccache)
-    CCACHE_STATUS="enabled"
-    PATH="$OLD_PATH"
   elif test "x$enable_ccache" = xno; then
     AC_MSG_RESULT([no, explicitly disabled])
+    CCACHE_STATUS="Disabled"
   elif test "x$enable_ccache" = x; then
     AC_MSG_RESULT([no])
   else
@@ -206,35 +213,31 @@
 AC_DEFUN([BPERF_SETUP_CCACHE_USAGE],
 [
   if test "x$CCACHE" != x; then
-    # Only use ccache if it is 3.1.4 or later, which supports
-    # precompiled headers.
-    AC_MSG_CHECKING([if ccache supports precompiled headers])
-    HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | grep -E 3.1.@<:@456789@:>@) 2> /dev/null`
-    if test "x$HAS_GOOD_CCACHE" = x; then
-      AC_MSG_RESULT([no, disabling ccache])
-      CCACHE=
-      CCACHE_STATUS="disabled"
-    else
-      AC_MSG_RESULT([yes])
+    if test "x$USE_PRECOMPILED_HEADER" = "x1"; then
+      HAS_BAD_CCACHE=[`$ECHO $CCACHE_VERSION | \
+          $GREP -e '^1.*' -e '^2.*' -e '^3\.0.*' -e '^3\.1\.[0123]'`]
+      if test "x$HAS_BAD_CCACHE" != "x"; then
+        AC_MSG_ERROR([Precompiled headers requires ccache 3.1.4 or later, found $CCACHE_VERSION])
+      fi
       AC_MSG_CHECKING([if C-compiler supports ccache precompiled headers])
+      CCACHE_PRECOMP_FLAG="-fpch-preprocess"
       PUSHED_FLAGS="$CXXFLAGS"
-      CXXFLAGS="-fpch-preprocess $CXXFLAGS"
+      CXXFLAGS="$CCACHE_PRECOMP_FLAG $CXXFLAGS"
       AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], [CC_KNOWS_CCACHE_TRICK=yes], [CC_KNOWS_CCACHE_TRICK=no])
       CXXFLAGS="$PUSHED_FLAGS"
       if test "x$CC_KNOWS_CCACHE_TRICK" = xyes; then
         AC_MSG_RESULT([yes])
+        CFLAGS_CCACHE="$CCACHE_PRECOMP_FLAG"
+        AC_SUBST(CFLAGS_CCACHE)
+        CCACHE_SLOPPINESS=pch_defines,time_macros
       else
-        AC_MSG_RESULT([no, disabling ccaching of precompiled headers])
-        CCACHE=
-        CCACHE_STATUS="disabled"
+        AC_MSG_RESULT([no])
+        AC_MSG_ERROR([Cannot use ccache with precompiled headers without compiler support for $CCACHE_PRECOMP_FLAG])
       fi
     fi
-  fi
 
-  if test "x$CCACHE" != x; then
-    CCACHE_SLOPPINESS=time_macros
-    CCACHE="CCACHE_COMPRESS=1 $SET_CCACHE_DIR CCACHE_SLOPPINESS=$CCACHE_SLOPPINESS $CCACHE"
-    CCACHE_FLAGS=-fpch-preprocess
+    CCACHE="CCACHE_COMPRESS=1 $SET_CCACHE_DIR \
+        CCACHE_SLOPPINESS=$CCACHE_SLOPPINESS CCACHE_BASEDIR=$TOPDIR $CCACHE"
 
     if test "x$SET_CCACHE_DIR" != x; then
       mkdir -p $CCACHE_DIR > /dev/null 2>&1
--- a/common/autoconf/configure	Tue Feb 17 13:19:23 2015 -0500
+++ b/common/autoconf/configure	Wed Feb 18 19:27:49 2015 -0800
@@ -40,8 +40,9 @@
   echo "Error: This script must be run using bash." 1>&2
   exit 1
 fi
-# Force autoconf to use bash
+# Force autoconf to use bash. This also means we must disable autoconf re-exec.
 export CONFIG_SHELL=$BASH
+export _as_can_reexec=no
 
 conf_script_dir="$TOPDIR/common/autoconf"
 
--- a/common/autoconf/generated-configure.sh	Tue Feb 17 13:19:23 2015 -0500
+++ b/common/autoconf/generated-configure.sh	Wed Feb 18 19:27:49 2015 -0800
@@ -629,6 +629,7 @@
 
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
+CFLAGS_CCACHE
 CCACHE
 USE_PRECOMPILED_HEADER
 SJAVAC_SERVER_DIR
@@ -991,6 +992,7 @@
 BASH
 BASENAME
 DATE_WHEN_CONFIGURED
+ORIGINAL_PATH
 CONFIGURE_COMMAND_LINE
 target_alias
 host_alias
@@ -4333,7 +4335,7 @@
 #CUSTOM_AUTOCONF_INCLUDE
 
 # Do not change or remove the following line, it is needed for consistency checks:
-DATE_WHEN_GENERATED=1421247827
+DATE_WHEN_GENERATED=1423567509
 
 ###############################################################################
 #
@@ -4366,6 +4368,9 @@
 
   # Save the original command line. This is passed to us by the wrapper configure script.
 
+  # Save the path variable before it gets changed
+  ORIGINAL_PATH="$PATH"
+
   DATE_WHEN_CONFIGURED=`LANG=C date`
 
   { $as_echo "$as_me:${as_lineno-$LINENO}: Configuration created at $DATE_WHEN_CONFIGURED." >&5
@@ -27438,8 +27443,8 @@
     # The trailing space for everyone except PATH is no typo, but is needed due
     # to trailing \ in the Windows paths. These will be stripped later.
     $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
-    $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
-    $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
+    $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
+    $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
     $ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
     $ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
     $ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE
@@ -27486,9 +27491,9 @@
     else
       { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5
 $as_echo "ok" >&6; }
-      # Remove any trailing "\" and " " from the variables.
-      VS_INCLUDE=`$ECHO "$VS_INCLUDE" | $SED 's/\\\\* *$//'`
-      VS_LIB=`$ECHO "$VS_LIB" | $SED 's/\\\\* *$//'`
+      # Remove any trailing "\" ";" and " " from the variables.
+      VS_INCLUDE=`$ECHO "$VS_INCLUDE" | $SED -e 's/\\\\*;* *$//'`
+      VS_LIB=`$ECHO "$VS_LIB" | $SED 's/\\\\*;* *$//'`
       VCINSTALLDIR=`$ECHO "$VCINSTALLDIR" | $SED 's/\\\\* *$//'`
       WindowsSDKDir=`$ECHO "$WindowsSDKDir" | $SED 's/\\\\* *$//'`
       WINDOWSSDKDIR=`$ECHO "$WINDOWSSDKDIR" | $SED 's/\\\\* *$//'`
@@ -27499,6 +27504,268 @@
 
 
 
+
+      # Convert VS_INCLUDE into SYSROOT_CFLAGS
+      OLDIFS="$IFS"
+      IFS=";"
+      for i in $VS_INCLUDE; do
+        ipath=$i
+	IFS="$OLDIFS"
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$ipath"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of ipath, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of ipath, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of ipath" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    ipath="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting ipath to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting ipath to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$ipath"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    ipath="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting ipath to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting ipath to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a unix platform. Hooray! :)
+    path="$ipath"
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of ipath, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of ipath, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+
+    # Use eval to expand a potential ~
+    eval path="$path"
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of ipath, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    ipath="`cd "$path"; $THEPWDCMD -L`"
+  fi
+
+	IFS=";"
+      	SYSROOT_CFLAGS="$SYSROOT_CFLAGS -I$ipath"
+      done
+      # Convert VS_LIB into SYSROOT_LDFLAGS
+      for i in $VS_LIB; do
+        libpath=$i
+	IFS="$OLDIFS"
+
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+
+  # Input might be given as Windows format, start by converting to
+  # unix format.
+  path="$libpath"
+  new_path=`$CYGPATH -u "$path"`
+
+  # Cygwin tries to hide some aspects of the Windows file system, such that binaries are
+  # named .exe but called without that suffix. Therefore, "foo" and "foo.exe" are considered
+  # the same file, most of the time (as in "test -f"). But not when running cygpath -s, then
+  # "foo.exe" is OK but "foo" is an error.
+  #
+  # This test is therefore slightly more accurate than "test -f" to check for file precense.
+  # It is also a way to make sure we got the proper file name for the real test later on.
+  test_shortpath=`$CYGPATH -s -m "$new_path" 2> /dev/null`
+  if test "x$test_shortpath" = x; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: The path of libpath, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of libpath, which resolves as \"$path\", is invalid." >&6;}
+    as_fn_error $? "Cannot locate the the path of libpath" "$LINENO" 5
+  fi
+
+  # Call helper function which possibly converts this using DOS-style short mode.
+  # If so, the updated path is stored in $new_path.
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-._/a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    shortmode_path=`$CYGPATH -s -m -a "$input_path"`
+    path_after_shortmode=`$CYGPATH -u "$shortmode_path"`
+    if test "x$path_after_shortmode" != "x$input_to_shortpath"; then
+      # Going to short mode and back again did indeed matter. Since short mode is
+      # case insensitive, let's make it lowercase to improve readability.
+      shortmode_path=`$ECHO "$shortmode_path" | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+      # Now convert it back to Unix-stile (cygpath)
+      input_path=`$CYGPATH -u "$shortmode_path"`
+      new_path="$input_path"
+    fi
+  fi
+
+  test_cygdrive_prefix=`$ECHO $input_path | $GREP ^/cygdrive/`
+  if test "x$test_cygdrive_prefix" = x; then
+    # As a simple fix, exclude /usr/bin since it's not a real path.
+    if test "x`$ECHO $new_path | $GREP ^/usr/bin/`" = x; then
+      # The path is in a Cygwin special directory (e.g. /home). We need this converted to
+      # a path prefixed by /cygdrive for fixpath to work.
+      new_path="$CYGWIN_ROOT_PATH$input_path"
+    fi
+  fi
+
+
+  if test "x$path" != "x$new_path"; then
+    libpath="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting libpath to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting libpath to \"$new_path\"" >&6;}
+  fi
+
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+
+  path="$libpath"
+  has_colon=`$ECHO $path | $GREP ^.:`
+  new_path="$path"
+  if test "x$has_colon" = x; then
+    # Not in mixed or Windows style, start by that.
+    new_path=`cmd //c echo $path`
+  fi
+
+
+  input_path="$new_path"
+  # Check if we need to convert this using DOS-style short mode. If the path
+  # contains just simple characters, use it. Otherwise (spaces, weird characters),
+  # take no chances and rewrite it.
+  # Note: m4 eats our [], so we need to use [ and ] instead.
+  has_forbidden_chars=`$ECHO "$input_path" | $GREP [^-_/:a-zA-Z0-9]`
+  if test "x$has_forbidden_chars" != x; then
+    # Now convert it to mixed DOS-style, short mode (no spaces, and / instead of \)
+    new_path=`cmd /c "for %A in (\"$input_path\") do @echo %~sA"|$TR \\\\\\\\ / | $TR 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+  fi
+
+
+  windows_path="$new_path"
+  if test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.cygwin"; then
+    unix_path=`$CYGPATH -u "$windows_path"`
+    new_path="$unix_path"
+  elif test "x$OPENJDK_BUILD_OS_ENV" = "xwindows.msys"; then
+    unix_path=`$ECHO "$windows_path" | $SED -e 's,^\\(.\\):,/\\1,g' -e 's,\\\\,/,g'`
+    new_path="$unix_path"
+  fi
+
+  if test "x$path" != "x$new_path"; then
+    libpath="$new_path"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Rewriting libpath to \"$new_path\"" >&5
+$as_echo "$as_me: Rewriting libpath to \"$new_path\"" >&6;}
+  fi
+
+  # Save the first 10 bytes of this path to the storage, so fixpath can work.
+  all_fixpath_prefixes=("${all_fixpath_prefixes[@]}" "${new_path:0:10}")
+
+  else
+    # We're on a unix platform. Hooray! :)
+    path="$libpath"
+    has_space=`$ECHO "$path" | $GREP " "`
+    if test "x$has_space" != x; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: The path of libpath, which resolves as \"$path\", is invalid." >&5
+$as_echo "$as_me: The path of libpath, which resolves as \"$path\", is invalid." >&6;}
+      as_fn_error $? "Spaces are not allowed in this path." "$LINENO" 5
+    fi
+
+    # Use eval to expand a potential ~
+    eval path="$path"
+    if test ! -f "$path" && test ! -d "$path"; then
+      as_fn_error $? "The path of libpath, which resolves as \"$path\", is not found." "$LINENO" 5
+    fi
+
+    libpath="`cd "$path"; $THEPWDCMD -L`"
+  fi
+
+	IFS=";"
+      	SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS -libpath:$libpath"
+      done
+      IFS="$OLDIFS"
     fi
   else
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
@@ -50616,16 +50883,17 @@
 
 
   CCACHE=
+  CCACHE_STATUS=
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking is ccache enabled" >&5
 $as_echo_n "checking is ccache enabled... " >&6; }
-  ENABLE_CCACHE=$enable_ccache
   if test "x$enable_ccache" = xyes; then
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+    if test "x$TOOLCHAIN_TYPE" = "xgcc" -o "x$TOOLCHAIN_TYPE" = "xclang"; then
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-    OLD_PATH="$PATH"
-    if test "x$TOOLCHAIN_PATH" != x; then
-      PATH=$TOOLCHAIN_PATH:$PATH
-    fi
+      OLD_PATH="$PATH"
+      if test "x$TOOLCHAIN_PATH" != x; then
+        PATH=$TOOLCHAIN_PATH:$PATH
+      fi
 
 
 
@@ -50819,11 +51087,19 @@
   fi
 
 
-    CCACHE_STATUS="enabled"
-    PATH="$OLD_PATH"
+      PATH="$OLD_PATH"
+      CCACHE_VERSION=`$CCACHE --version | head -n1 | $SED 's/[A-Za-z ]*//'`
+      CCACHE_STATUS="Active ($CCACHE_VERSION)"
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: ccache is not supported with toolchain type $TOOLCHAIN_TYPE" >&5
+$as_echo "$as_me: WARNING: ccache is not supported with toolchain type $TOOLCHAIN_TYPE" >&2;}
+    fi
   elif test "x$enable_ccache" = xno; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, explicitly disabled" >&5
 $as_echo "no, explicitly disabled" >&6; }
+    CCACHE_STATUS="Disabled"
   elif test "x$enable_ccache" = x; then
     { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -50854,23 +51130,17 @@
   if test "x$CCACHE" != x; then
 
   if test "x$CCACHE" != x; then
-    # Only use ccache if it is 3.1.4 or later, which supports
-    # precompiled headers.
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking if ccache supports precompiled headers" >&5
-$as_echo_n "checking if ccache supports precompiled headers... " >&6; }
-    HAS_GOOD_CCACHE=`($CCACHE --version | head -n 1 | grep -E 3.1.[456789]) 2> /dev/null`
-    if test "x$HAS_GOOD_CCACHE" = x; then
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabling ccache" >&5
-$as_echo "no, disabling ccache" >&6; }
-      CCACHE=
-      CCACHE_STATUS="disabled"
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+    if test "x$USE_PRECOMPILED_HEADER" = "x1"; then
+      HAS_BAD_CCACHE=`$ECHO $CCACHE_VERSION | \
+          $GREP -e '^1.*' -e '^2.*' -e '^3\.0.*' -e '^3\.1\.[0123]'`
+      if test "x$HAS_BAD_CCACHE" != "x"; then
+        as_fn_error $? "Precompiled headers requires ccache 3.1.4 or later, found $CCACHE_VERSION" "$LINENO" 5
+      fi
       { $as_echo "$as_me:${as_lineno-$LINENO}: checking if C-compiler supports ccache precompiled headers" >&5
 $as_echo_n "checking if C-compiler supports ccache precompiled headers... " >&6; }
+      CCACHE_PRECOMP_FLAG="-fpch-preprocess"
       PUSHED_FLAGS="$CXXFLAGS"
-      CXXFLAGS="-fpch-preprocess $CXXFLAGS"
+      CXXFLAGS="$CCACHE_PRECOMP_FLAG $CXXFLAGS"
       cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -50892,19 +51162,18 @@
       if test "x$CC_KNOWS_CCACHE_TRICK" = xyes; then
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-      else
-        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, disabling ccaching of precompiled headers" >&5
-$as_echo "no, disabling ccaching of precompiled headers" >&6; }
-        CCACHE=
-        CCACHE_STATUS="disabled"
-      fi
-    fi
-  fi
-
-  if test "x$CCACHE" != x; then
-    CCACHE_SLOPPINESS=time_macros
-    CCACHE="CCACHE_COMPRESS=1 $SET_CCACHE_DIR CCACHE_SLOPPINESS=$CCACHE_SLOPPINESS $CCACHE"
-    CCACHE_FLAGS=-fpch-preprocess
+        CFLAGS_CCACHE="$CCACHE_PRECOMP_FLAG"
+
+        CCACHE_SLOPPINESS=pch_defines,time_macros
+      else
+        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+        as_fn_error $? "Cannot use ccache with precompiled headers without compiler support for $CCACHE_PRECOMP_FLAG" "$LINENO" 5
+      fi
+    fi
+
+    CCACHE="CCACHE_COMPRESS=1 $SET_CCACHE_DIR \
+        CCACHE_SLOPPINESS=$CCACHE_SLOPPINESS CCACHE_BASEDIR=$TOPDIR $CCACHE"
 
     if test "x$SET_CCACHE_DIR" != x; then
       mkdir -p $CCACHE_DIR > /dev/null 2>&1
--- a/common/autoconf/hotspot-spec.gmk.in	Tue Feb 17 13:19:23 2015 -0500
+++ b/common/autoconf/hotspot-spec.gmk.in	Wed Feb 18 19:27:49 2015 -0800
@@ -109,8 +109,8 @@
 MT:=@HOTSPOT_MT@
 RC:=@HOTSPOT_RC@
 
-EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@
-EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@
+EXTRA_CFLAGS=@LEGACY_EXTRA_CFLAGS@ $(CFLAGS_CCACHE)
+EXTRA_CXXFLAGS=@LEGACY_EXTRA_CXXFLAGS@ $(CFLAGS_CCACHE)
 EXTRA_LDFLAGS=@LEGACY_EXTRA_LDFLAGS@
 
 USE_PRECOMPILED_HEADER=@USE_PRECOMPILED_HEADER@
@@ -132,6 +132,13 @@
   ZIP_DEBUGINFO_FILES:=0
 endif
 
+ifeq ($(OPENJDK_TARGET_OS), windows)
+  # On Windows, the Visual Studio toolchain needs the LIB and INCLUDE
+  # environment variables (in Windows path style).
+  export INCLUDE:=@VS_INCLUDE@
+  export LIB:=@VS_LIB@
+endif
+
 # Sneak this in via the spec.gmk file, since we don't want to mess around too much with the Hotspot make files.
 # This is needed to get the LOG setting to work properly.
 include $(SRC_ROOT)/make/common/MakeBase.gmk
--- a/common/autoconf/spec.gmk.in	Tue Feb 17 13:19:23 2015 -0500
+++ b/common/autoconf/spec.gmk.in	Wed Feb 18 19:27:49 2015 -0800
@@ -129,14 +129,12 @@
 # colon or semicolon
 PATH_SEP:=@PATH_SEP@
 
+# Save the original path before replacing it with the Visual Studio tools
+ORIGINAL_PATH:=@ORIGINAL_PATH@
 ifeq ($(OPENJDK_TARGET_OS), windows)
-  # On Windows, the Visual Studio toolchain needs the LIB and INCLUDE
-  # environment variables (in Windows path style), and the PATH needs to
-  # be adjusted to include Visual Studio tools (but this needs to be in
-  # cygwin/msys style).
+  # On Windows, the Visual Studio toolchain needs the PATH to be adjusted
+  # to include Visual Studio tools (this needs to be in cygwin/msys style).
   export PATH:=@VS_PATH@
-  export INCLUDE:=@VS_INCLUDE@
-  export LIB:=@VS_LIB@
 endif
 
 SYSROOT_CFLAGS := @SYSROOT_CFLAGS@
@@ -328,6 +326,8 @@
 
 CFLAGS_WARNINGS_ARE_ERRORS:=@CFLAGS_WARNINGS_ARE_ERRORS@
 
+CFLAGS_CCACHE:=@CFLAGS_CCACHE@
+
 # Tools that potentially need to be cross compilation aware.
 CC:=@FIXPATH@ @CCACHE@ @CC@
 
--- a/common/autoconf/toolchain_windows.m4	Tue Feb 17 13:19:23 2015 -0500
+++ b/common/autoconf/toolchain_windows.m4	Wed Feb 18 19:27:49 2015 -0800
@@ -213,9 +213,9 @@
       AC_MSG_ERROR([Your VC command prompt seems broken, INCLUDE and/or LIB is missing.])
     else
       AC_MSG_RESULT([ok])
-      # Remove any trailing "\" and " " from the variables.
-      VS_INCLUDE=`$ECHO "$VS_INCLUDE" | $SED 's/\\\\* *$//'`
-      VS_LIB=`$ECHO "$VS_LIB" | $SED 's/\\\\* *$//'`
+      # Remove any trailing "\" ";" and " " from the variables.
+      VS_INCLUDE=`$ECHO "$VS_INCLUDE" | $SED -e 's/\\\\*;* *$//'`
+      VS_LIB=`$ECHO "$VS_LIB" | $SED 's/\\\\*;* *$//'`
       VCINSTALLDIR=`$ECHO "$VCINSTALLDIR" | $SED 's/\\\\* *$//'`
       WindowsSDKDir=`$ECHO "$WindowsSDKDir" | $SED 's/\\\\* *$//'`
       WINDOWSSDKDIR=`$ECHO "$WINDOWSSDKDIR" | $SED 's/\\\\* *$//'`
@@ -226,6 +226,26 @@
       AC_SUBST(VS_PATH)
       AC_SUBST(VS_INCLUDE)
       AC_SUBST(VS_LIB)
+
+      # Convert VS_INCLUDE into SYSROOT_CFLAGS
+      OLDIFS="$IFS"
+      IFS=";"
+      for i in $VS_INCLUDE; do
+        ipath=$i
+	IFS="$OLDIFS"
+        BASIC_FIXUP_PATH([ipath])
+	IFS=";"
+      	SYSROOT_CFLAGS="$SYSROOT_CFLAGS -I$ipath"
+      done
+      # Convert VS_LIB into SYSROOT_LDFLAGS
+      for i in $VS_LIB; do
+        libpath=$i
+	IFS="$OLDIFS"
+        BASIC_FIXUP_PATH([libpath])
+	IFS=";"
+      	SYSROOT_LDFLAGS="$SYSROOT_LDFLAGS -libpath:$libpath"
+      done
+      IFS="$OLDIFS"
     fi
   else
     AC_MSG_RESULT([not found])
--- a/common/bin/unshuffle_list.txt	Tue Feb 17 13:19:23 2015 -0500
+++ b/common/bin/unshuffle_list.txt	Wed Feb 18 19:27:49 2015 -0800
@@ -123,6 +123,7 @@
 jdk/src/java.base/share/classes/java/math : jdk/src/share/classes/java/math
 jdk/src/java.base/share/classes/java/net : jdk/src/share/classes/java/net
 jdk/src/java.base/share/classes/java/nio : jdk/src/share/classes/java/nio
+jdk/src/java.base/share/classes/java/security/acl : jdk/src/share/classes/java/security/acl
 jdk/src/java.base/share/classes/java/security/cert : jdk/src/share/classes/java/security/cert
 jdk/src/java.base/share/classes/java/security/interfaces : jdk/src/share/classes/java/security/interfaces
 jdk/src/java.base/share/classes/java/security : jdk/src/share/classes/java/security
@@ -179,6 +180,7 @@
 jdk/src/java.base/share/classes/sun/nio/cs : jdk/src/share/classes/sun/nio/cs
 jdk/src/java.base/share/classes/sun/nio/fs : jdk/src/share/classes/sun/nio/fs
 jdk/src/java.base/share/classes/sun/reflect : jdk/src/share/classes/sun/reflect
+jdk/src/java.base/share/classes/sun/security/acl : jdk/src/share/classes/sun/security/acl
 jdk/src/java.base/share/classes/sun/security/action : jdk/src/share/classes/sun/security/action
 jdk/src/java.base/share/classes/sun/security/internal : jdk/src/share/classes/sun/security/internal
 jdk/src/java.base/share/classes/sun/security/jca : jdk/src/share/classes/sun/security/jca
@@ -1211,8 +1213,6 @@
 jdk/src/java.rmi/unix/bin/java-rmi.cgi.sh : jdk/src/solaris/bin/java-rmi.cgi.sh
 jdk/src/java.scripting/share/classes/javax/script : jdk/src/share/classes/javax/script
 jdk/src/java.scripting/share/classes/com/sun/tools/script/shell : jdk/src/share/classes/com/sun/tools/script/shell
-jdk/src/java.security.acl/share/classes/java/security/acl : jdk/src/share/classes/java/security/acl
-jdk/src/java.security.acl/share/classes/sun/security/acl : jdk/src/share/classes/sun/security/acl
 jdk/src/java.security.jgss/macosx/native/libosxkrb5/nativeccache.c : jdk/src/share/native/sun/security/krb5/nativeccache.c
 jdk/src/java.security.jgss/macosx/native/libosxkrb5/SCDynamicStoreConfig.m : jdk/src/macosx/native/sun/security/krb5/SCDynamicStoreConfig.m
 jdk/src/java.security.jgss/share/classes/javax/security/auth/kerberos : jdk/src/share/classes/javax/security/auth/kerberos
--- a/corba/.hgtags	Tue Feb 17 13:19:23 2015 -0500
+++ b/corba/.hgtags	Wed Feb 18 19:27:49 2015 -0800
@@ -291,3 +291,5 @@
 326f2068b4a4c05e2fa27d6acf93eba7b54b090d jdk9-b46
 ee8447ca632e1d39180b4767c749db101bff7314 jdk9-b47
 a13c49c5f2899b702652a460ed7aa73123e671e6 jdk9-b48
+9285d14eb7b6b0815679bae98dd936dbc136218d jdk9-b49
+224f593393e5b01b3c8f1e591b7f4b1790a3737a jdk9-b50
--- a/hotspot/.hgtags	Tue Feb 17 13:19:23 2015 -0500
+++ b/hotspot/.hgtags	Wed Feb 18 19:27:49 2015 -0800
@@ -451,3 +451,5 @@
 a184ee1d717297bd35b7c3e35393e137921a3ed2 jdk9-b46
 3b241fb72b8925b75941d612db762a6d5da66d02 jdk9-b47
 cc775a4a24c7f5d9e624b4205e9fbd48a17331f6 jdk9-b48
+360cd1fc42f10941a9fd17cc32d5b85a22d12a0b jdk9-b49
+e0947f58c9c1426aa0d98b98ebb78357b27a7b99 jdk9-b50
--- a/jaxp/.hgtags	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxp/.hgtags	Wed Feb 18 19:27:49 2015 -0800
@@ -291,3 +291,5 @@
 74eaf7ad986576c792df4dbff05eed63e5727695 jdk9-b46
 e391de88e69b59d7c618387e3cf91032f6991ce9 jdk9-b47
 833051855168a973780fafeb6fc59e7370bcf400 jdk9-b48
+786058752e0ac3e48d7aef79e0885d29d6a2a7eb jdk9-b49
+74ead7bddde19263fd463bc1bd87de84f27d1b5e jdk9-b50
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/datatype/ptests/DurationTest.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,585 @@
+/*
+ * Copyright (c) 1999, 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 javax.xml.datatype.ptests;
+
+import static javax.xml.datatype.DatatypeConstants.DAYS;
+import static javax.xml.datatype.DatatypeConstants.HOURS;
+import static javax.xml.datatype.DatatypeConstants.MINUTES;
+import static javax.xml.datatype.DatatypeConstants.MONTHS;
+import static javax.xml.datatype.DatatypeConstants.SECONDS;
+import static javax.xml.datatype.DatatypeConstants.YEARS;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertTrue;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.util.Calendar;
+import java.util.function.Function;
+
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeConstants;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.Duration;
+import javax.xml.namespace.QName;
+
+import jaxp.library.JAXPBaseTest;
+
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+/*
+ * @summary Class containing the test cases for Duration.
+ */
+public class DurationTest extends JAXPBaseTest {
+
+    private DatatypeFactory datatypeFactory;
+
+    /*
+     * Setup.
+     */
+    @BeforeClass
+    public void setup() throws DatatypeConfigurationException {
+        datatypeFactory = DatatypeFactory.newInstance();
+    }
+
+    @DataProvider(name = "legal-number-duration")
+    public Object[][] getLegalNumberDuration() {
+        return new Object[][] {
+                // is positive, year, month, day, hour, minute, second
+                { true, 1, 1, 1, 1, 1, 1 },
+                { false, 1, 1, 1, 1, 1, 1 },
+                { true, 1, 0, 0, 0, 0, 0 },
+                { false, 1, 0, 0, 0, 0, 0 }
+        };
+    }
+
+    /*
+     * Test for constructor Duration(boolean isPositive,int years,int months,
+     * int days,int hours,int minutes,int seconds).
+     */
+    @Test(dataProvider = "legal-number-duration")
+    public void checkNumberDurationPos(boolean isPositive, int years, int months, int days, int hours, int minutes, int seconds) {
+        datatypeFactory.newDuration(isPositive, years, months, days, hours, minutes, seconds);
+    }
+
+    @DataProvider(name = "illegal-number-duration")
+    public Object[][] getIllegalNumberDuration() {
+        return new Object[][] {
+                // is positive, year, month, day, hour, minute, second
+                { true, 1, 1, -1, 1, 1, 1 },
+                { false, 1, 1, -1, 1, 1, 1 },
+                { true, undef, undef, undef, undef, undef, undef },
+                { false, undef, undef, undef, undef, undef, undef }
+        };
+    }
+
+    /*
+     * Test for constructor Duration(boolean isPositive,int years,int months,
+     * int days,int hours,int minutes,int seconds), if any of the fields is
+     * negative should throw IllegalArgumentException.
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "illegal-number-duration")
+    public void checkDurationNumberNeg(boolean isPositive, int years, int months, int days, int hours, int minutes, int seconds) {
+        datatypeFactory.newDuration(isPositive, years, months, days, hours, minutes, seconds);
+    }
+
+    @DataProvider(name = "legal-bigint-duration")
+    public Object[][] getLegalBigIntegerDuration() {
+        return new Object[][] {
+                // is positive, year, month, day, hour, minute, second
+                { true, zero, zero, zero, zero, zero, new BigDecimal(zero) },
+                { false, zero, zero, zero, zero, zero, new BigDecimal(zero) },
+                { true, one, one, one, one, one, new BigDecimal(one) },
+                { false, one, one, one, one, one, new BigDecimal(one) },
+                { true, null, null, null, null, null, new BigDecimal(one) },
+                { false, null, null, null, null, null, new BigDecimal(one) } };
+    }
+
+    /*
+     * Test for constructor Duration(boolean isPositive,BigInteger
+     * years,BigInteger months, BigInteger days,BigInteger hours,BigInteger
+     * minutes,BigDecimal seconds).
+     */
+    @Test(dataProvider = "legal-bigint-duration")
+    public void checkBigIntegerDurationPos(boolean isPositive, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes,
+            BigDecimal seconds) {
+        datatypeFactory.newDuration(isPositive, years, months, days, hours, minutes, seconds);
+    }
+
+    @DataProvider(name = "illegal-bigint-duration")
+    public Object[][] getIllegalBigIntegerDuration() {
+        return new Object[][] {
+                // is positive, year, month, day, hour, minute, second
+                { true, null, null, null, null, null, null },
+                { false, null, null, null, null, null, null }
+        };
+    }
+
+    /*
+     * Test for constructor Duration(boolean isPositive,BigInteger
+     * years,BigInteger months, BigInteger days,BigInteger hours,BigInteger
+     * minutes,BigDecimal seconds), if all the fields are null should throw
+     * IllegalArgumentException.
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "illegal-bigint-duration")
+    public void checkBigIntegerDurationNeg(boolean isPositive, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes,
+            BigDecimal seconds) {
+        datatypeFactory.newDuration(isPositive, years, months, days, hours, minutes, seconds);
+    }
+
+    @DataProvider(name = "legal-millisec-duration")
+    public Object[][] getLegalMilliSecondDuration() {
+        return new Object[][] { { 1000000 }, { 0 }, { Long.MAX_VALUE }, { Long.MIN_VALUE }
+
+        };
+    }
+
+    /*
+     * Test for constructor Duration(long durationInMilliSeconds)
+     */
+    @Test(dataProvider = "legal-millisec-duration")
+    public void checkMilliSecondDuration(long millisec) {
+        datatypeFactory.newDuration(millisec);
+    }
+
+    @DataProvider(name = "legal-lexical-duration")
+    public Object[][] getLegalLexicalDuration() {
+        return new Object[][] { { "P1Y1M1DT1H1M1S" }, { "-P1Y1M1DT1H1M1S" } };
+    }
+
+    /*
+     * Test for constructor Duration(java.lang.String lexicalRepresentation)
+     */
+    @Test(dataProvider = "legal-lexical-duration")
+    public void checkLexicalDurationPos(String lexRepresentation) {
+        datatypeFactory.newDuration(lexRepresentation);
+    }
+
+    @DataProvider(name = "illegal-lexical-duration")
+    public Object[][] getIllegalLexicalDuration() {
+        return new Object[][] {
+                { null },
+                { "P1Y1M1DT1H1M1S " },
+                { " P1Y1M1DT1H1M1S" },
+                { "X1Y1M1DT1H1M1S" },
+                { "" },
+                { "P1Y2MT" } // The designator 'T' shall be absent if all of the time items are absent in "PnYnMnDTnHnMnS"
+        };
+    }
+
+    /*
+     * Test for constructor Duration(java.lang.String lexicalRepresentation),
+     * null should throw NullPointerException, invalid lex should throw
+     * IllegalArgumentException
+     */
+    @Test(expectedExceptions = { NullPointerException.class, IllegalArgumentException.class }, dataProvider = "illegal-lexical-duration")
+    public void checkLexicalDurationNeg(String lexRepresentation) {
+        datatypeFactory.newDuration(lexRepresentation);
+    }
+
+    @DataProvider(name = "equal-duration")
+    public Object[][] getEqualDurations() {
+        return new Object[][] { { "P1Y1M1DT1H1M1S", "P1Y1M1DT1H1M1S" } };
+    }
+
+    /*
+     * Test for compare() both durations valid and equal.
+     */
+    @Test(dataProvider = "equal-duration")
+    public void checkDurationEqual(String lexRepresentation1, String lexRepresentation2) {
+        Duration duration1 = datatypeFactory.newDuration(lexRepresentation1);
+        Duration duration2 = datatypeFactory.newDuration(lexRepresentation2);
+        assertTrue(duration1.equals(duration2));
+    }
+
+    @DataProvider(name = "greater-duration")
+    public Object[][] getGreaterDuration() {
+        return new Object[][] {
+                { "P1Y1M1DT1H1M2S", "P1Y1M1DT1H1M1S" },
+                { "P1Y1M1DT1H1M1S", "-P1Y1M1DT1H1M2S" },
+                { "P1Y1M1DT1H1M2S", "-P1Y1M1DT1H1M1S" },
+                { "-P1Y1M1DT1H1M1S", "-P1Y1M1DT1H1M2S" }, };
+    }
+
+    /*
+     * Test for compare() both durations valid and lhs > rhs.
+     */
+    @Test(dataProvider = "greater-duration")
+    public void checkDurationCompare(String lexRepresentation1, String lexRepresentation2) {
+        Duration duration1 = datatypeFactory.newDuration(lexRepresentation1);
+        Duration duration2 = datatypeFactory.newDuration(lexRepresentation2);
+        assertTrue(duration1.compare(duration2) == DatatypeConstants.GREATER);
+    }
+
+    @DataProvider(name = "not-equal-duration")
+    public Object[][] getNotEqualDurations() {
+        return new Object[][] {
+                { "P1Y1M1DT1H1M1S", "-P1Y1M1DT1H1M1S" },
+                { "P2Y1M1DT1H1M1S", "P1Y1M1DT1H1M1S" } };
+    }
+
+    /*
+     * Test for equals() both durations valid and lhs not equals rhs.
+     */
+    @Test(dataProvider = "not-equal-duration")
+    public void checkDurationNotEqual(String lexRepresentation1, String lexRepresentation2) {
+        Duration duration1 = datatypeFactory.newDuration(lexRepresentation1);
+        Duration duration2 = datatypeFactory.newDuration(lexRepresentation2);
+        Assert.assertNotEquals(duration1, duration2);
+    }
+
+    @DataProvider(name = "duration-sign")
+    public Object[][] getDurationAndSign() {
+        return new Object[][] {
+                { "P0Y0M0DT0H0M0S", 0 },
+                { "P1Y0M0DT0H0M0S", 1 },
+                { "-P1Y0M0DT0H0M0S", -1 } };
+    }
+
+    /*
+     * Test for Duration.getSign().
+     */
+    @Test(dataProvider = "duration-sign")
+    public void checkDurationSign(String lexRepresentation, int sign) {
+        Duration duration = datatypeFactory.newDuration(lexRepresentation);
+        assertEquals(duration.getSign(), sign);
+    }
+
+    /*
+     * Test for Duration.negate().
+     */
+    @Test
+    public void checkDurationNegate() {
+        Duration durationPos = datatypeFactory.newDuration("P1Y0M0DT0H0M0S");
+        Duration durationNeg = datatypeFactory.newDuration("-P1Y0M0DT0H0M0S");
+
+        assertEquals(durationPos.negate(), durationNeg);
+        assertEquals(durationNeg.negate(), durationPos);
+        assertEquals(durationPos.negate().negate(), durationPos);
+
+    }
+
+    /*
+     * Test for Duration.isShorterThan(Duration) and
+     * Duration.isLongerThan(Duration).
+     */
+    @Test
+    public void checkDurationShorterLonger() {
+        Duration shorter = datatypeFactory.newDuration("P1Y1M1DT1H1M1S");
+        Duration longer = datatypeFactory.newDuration("P2Y1M1DT1H1M1S");
+
+        assertTrue(shorter.isShorterThan(longer));
+        assertFalse(longer.isShorterThan(shorter));
+        assertFalse(shorter.isShorterThan(shorter));
+
+        assertTrue(longer.isLongerThan(shorter));
+        assertFalse(shorter.isLongerThan(longer));
+        assertFalse(shorter.isLongerThan(shorter));
+    }
+
+    /*
+     * Test for Duration.isSet().
+     */
+    @Test
+    public void checkDurationIsSet() {
+        Duration duration1 = datatypeFactory.newDuration(true, 1, 1, 1, 1, 1, 1);
+        Duration duration2 = datatypeFactory.newDuration(true, 0, 0, 0, 0, 0, 0);
+
+        assertTrue(duration1.isSet(YEARS));
+        assertTrue(duration1.isSet(MONTHS));
+        assertTrue(duration1.isSet(DAYS));
+        assertTrue(duration1.isSet(HOURS));
+        assertTrue(duration1.isSet(MINUTES));
+        assertTrue(duration1.isSet(SECONDS));
+
+        assertTrue(duration2.isSet(YEARS));
+        assertTrue(duration2.isSet(MONTHS));
+        assertTrue(duration2.isSet(DAYS));
+        assertTrue(duration2.isSet(HOURS));
+        assertTrue(duration2.isSet(MINUTES));
+        assertTrue(duration2.isSet(SECONDS));
+
+        Duration duration66 = datatypeFactory.newDuration(true, null, null, zero, null, null, null);
+        assertFalse(duration66.isSet(YEARS));
+        assertFalse(duration66.isSet(MONTHS));
+        assertFalse(duration66.isSet(HOURS));
+        assertFalse(duration66.isSet(MINUTES));
+        assertFalse(duration66.isSet(SECONDS));
+
+        Duration duration3 = datatypeFactory.newDuration("P1D");
+        assertFalse(duration3.isSet(YEARS));
+        assertFalse(duration3.isSet(MONTHS));
+        assertFalse(duration3.isSet(HOURS));
+        assertFalse(duration3.isSet(MINUTES));
+        assertFalse(duration3.isSet(SECONDS));
+    }
+
+    /*
+     * Test Duration.isSet(Field) throws NPE if the field parameter is null.
+     */
+    @Test(expectedExceptions = NullPointerException.class)
+    public void checkDurationIsSetNeg() {
+        Duration duration = datatypeFactory.newDuration(true, 0, 0, 0, 0, 0, 0);
+        duration.isSet(null);
+    }
+
+    /*
+     * Test for -getField(DatatypeConstants.Field) DatatypeConstants.Field is
+     * null - throws NPE.
+     */
+    @Test(expectedExceptions = NullPointerException.class)
+    public void checkDurationGetFieldNeg() {
+        Duration duration67 = datatypeFactory.newDuration("P1Y1M1DT1H1M1S");
+        duration67.getField(null);
+    }
+
+    @DataProvider(name = "duration-fields")
+    public Object[][] getDurationAndFields() {
+        return new Object[][] {
+                { "P1Y1M1DT1H1M1S", one, one, one, one, one, new BigDecimal(one) },
+                { "PT1M", null, null, null, null, one, null },
+                { "P1M", null, one, null, null, null, null } };
+    }
+
+    /*
+     * Test for Duration.getField(DatatypeConstants.Field).
+     */
+    @Test(dataProvider = "duration-fields")
+    public void checkDurationGetField(String lexRepresentation, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes,
+            BigDecimal seconds) {
+        Duration duration = datatypeFactory.newDuration(lexRepresentation);
+
+        assertEquals(duration.getField(YEARS), years);
+        assertEquals(duration.getField(MONTHS), months);
+        assertEquals(duration.getField(DAYS), days);
+        assertEquals(duration.getField(HOURS), hours);
+        assertEquals(duration.getField(MINUTES), minutes);
+        assertEquals(duration.getField(SECONDS), seconds);
+    }
+
+    @DataProvider(name = "number-string")
+    public Object[][] getNumberAndString() {
+        return new Object[][] {
+                // is positive, year, month, day, hour, minute, second, lexical
+                { true, 1, 1, 1, 1, 1, 1, "P1Y1M1DT1H1M1S" },
+                { false, 1, 1, 1, 1, 1, 1, "-P1Y1M1DT1H1M1S" },
+                { true, 0, 0, 0, 0, 0, 0, "P0Y0M0DT0H0M0S" },
+                { false, 0, 0, 0, 0, 0, 0, "P0Y0M0DT0H0M0S" }
+        };
+    }
+
+    /*
+     * Test for - toString().
+     */
+    @Test(dataProvider = "number-string")
+    public void checkDurationToString(boolean isPositive, int years, int months, int days, int hours, int minutes, int seconds, String lexical) {
+        Duration duration = datatypeFactory.newDuration(isPositive,  years,  months,  days,  hours,  minutes,  seconds);
+        assertEquals(duration.toString(), lexical);
+
+        assertEquals(datatypeFactory.newDuration(duration.toString()), duration);
+    }
+
+    @DataProvider(name = "duration-field")
+    public Object[][] getDurationAndField() {
+        Function<Duration, Integer> getyears = duration -> duration.getYears();
+        Function<Duration, Integer> getmonths = duration -> duration.getMonths();
+        Function<Duration, Integer> getdays = duration -> duration.getDays();
+        Function<Duration, Integer> gethours = duration -> duration.getHours();
+        Function<Duration, Integer> getminutes = duration -> duration.getMinutes();
+        Function<Duration, Integer> getseconds = duration -> duration.getSeconds();
+        return new Object[][] {
+                { "P1Y1M1DT1H1M1S", getyears, 1 },
+                { "P1M1DT1H1M1S", getyears, 0 },
+                { "P1Y1M1DT1H1M1S", getmonths, 1 },
+                { "P1Y1DT1H1M1S", getmonths, 0 },
+                { "P1Y1M1DT1H1M1S", getdays, 1 },
+                { "P1Y1MT1H1M1S", getdays, 0 },
+                { "P1Y1M1DT1H1M1S", gethours, 1 },
+                { "P1Y1M1DT1M1S", gethours, 0 },
+                { "P1Y1M1DT1H1M1S", getminutes, 1 },
+                { "P1Y1M1DT1H1S", getminutes, 0 },
+                { "P1Y1M1DT1H1M1S", getseconds, 1 },
+                { "P1Y1M1DT1H1M", getseconds, 0 },
+                { "P1Y1M1DT1H1M100000000S", getseconds, 100000000 }, };
+    }
+
+    /*
+     * Test for Duration.getYears(), getMonths(), etc.
+     */
+    @Test(dataProvider = "duration-field")
+    public void checkDurationGetOneField(String lexRepresentation, Function<Duration, Integer> getter, int value) {
+        Duration duration = datatypeFactory.newDuration(lexRepresentation);
+        assertEquals(getter.apply(duration).intValue(), value);
+    }
+
+    /*
+     * Test for - getField(SECONDS)
+     */
+    @Test
+    public void checkDurationGetSecondsField() {
+        Duration duration85 = datatypeFactory.newDuration("P1Y1M1DT1H1M100000000S");
+        assertEquals((duration85.getField(SECONDS)).intValue(), 100000000);
+    }
+
+    /*
+     * getTimeInMillis(java.util.Calendar startInstant) returns milliseconds
+     * between startInstant and startInstant plus this Duration.
+     */
+    @Test
+    public void checkDurationGetTimeInMillis() {
+        Duration duration86 = datatypeFactory.newDuration("PT1M1S");
+        Calendar calendar86 = Calendar.getInstance();
+        assertEquals(duration86.getTimeInMillis(calendar86), 61000);
+    }
+
+    /*
+     * getTimeInMillis(java.util.Calendar startInstant) returns milliseconds
+     * between startInstant and startInstant plus this Duration throws NPE if
+     * startInstant parameter is null.
+     */
+    @Test(expectedExceptions = NullPointerException.class)
+    public void checkDurationGetTimeInMillisNeg() {
+        Duration duration87 = datatypeFactory.newDuration("PT1M1S");
+        Calendar calendar87 = null;
+        duration87.getTimeInMillis(calendar87);
+    }
+
+    @DataProvider(name = "duration-for-hash")
+    public Object[][] getDurationsForHash() {
+        return new Object[][] {
+                { "P1Y1M1DT1H1M1S", "P1Y1M1DT1H1M1S" },
+                { "P1D", "PT24H" },
+                { "PT1H", "PT60M" },
+                { "PT1M", "PT60S" },
+                { "P1Y", "P12M" } };
+    }
+
+    /*
+     * Test for Duration.hashcode(). hashcode() should return same value for
+     * some equal durations.
+     */
+    @Test(dataProvider = "duration-for-hash")
+    public void checkDurationHashCode(String lexRepresentation1, String lexRepresentation2) {
+        Duration duration1 = datatypeFactory.newDuration(lexRepresentation1);
+        Duration duration2 = datatypeFactory.newDuration(lexRepresentation2);
+        int hash1 = duration1.hashCode();
+        int hash2 = duration2.hashCode();
+        assertTrue(hash1 == hash2, " generated hash1 : " + hash1 + " generated hash2 : " + hash2);
+    }
+
+    @DataProvider(name = "duration-for-add")
+    public Object[][] getDurationsForAdd() {
+        return new Object[][] {
+                // initVal, addVal, resultVal
+                { "P1Y1M1DT1H1M1S", "P1Y1M1DT1H1M1S", "P2Y2M2DT2H2M2S" },
+                { "P1Y1M1DT1H1M1S", "-P1Y1M1DT1H1M1S", "P0Y0M0DT0H0M0S" },
+                { "-P1Y1M1DT1H1M1S", "-P1Y1M1DT1H1M1S", "-P2Y2M2DT2H2M2S" }, };
+    }
+
+    /*
+     * Test for add(Duration rhs).
+     */
+    @Test(dataProvider = "duration-for-add")
+    public void checkDurationAdd(String initVal, String addVal, String result) {
+        Duration durationInit = datatypeFactory.newDuration(initVal);
+        Duration durationAdd = datatypeFactory.newDuration(addVal);
+        Duration durationResult = datatypeFactory.newDuration(result);
+
+        assertEquals(durationInit.add(durationAdd), durationResult);
+    }
+
+    @DataProvider(name = "duration-for-addneg")
+    public Object[][] getDurationsForAddNeg() {
+        return new Object[][] {
+                // initVal, addVal
+                { "P1Y1M1DT1H1M1S", null },
+                { "P1Y", "-P1D" },
+                { "-P1Y", "P1D" }, };
+    }
+
+    /*
+     * Test for add(Duration rhs) 'rhs' is null , should throw NPE. "1 year" +
+     * "-1 day" or "-1 year" + "1 day" should throw IllegalStateException
+     */
+    @Test(expectedExceptions = { NullPointerException.class, IllegalStateException.class }, dataProvider = "duration-for-addneg")
+    public void checkDurationAddNeg(String initVal, String addVal) {
+        Duration durationInit = datatypeFactory.newDuration(initVal);
+        Duration durationAdd = addVal == null ? null : datatypeFactory.newDuration(addVal);
+
+        durationInit.add(durationAdd);
+    }
+
+    /*
+     * Test Duration#compare(Duration duration) with large durations.
+     *
+     * Bug # 4972785 UnsupportedOperationException is expected
+     *
+     */
+    @Test(expectedExceptions = UnsupportedOperationException.class)
+    public void checkDurationCompareLarge() {
+        String duration1Lex = "P100000000000000000000D";
+        String duration2Lex = "PT2400000000000000000000H";
+
+        Duration duration1 = datatypeFactory.newDuration(duration1Lex);
+        Duration duration2 = datatypeFactory.newDuration(duration2Lex);
+        duration1.compare(duration2);
+
+    }
+
+    /*
+     * Test Duration#getXMLSchemaType().
+     *
+     * Bug # 5049544 Duration.getXMLSchemaType shall return the correct result
+     *
+     */
+    @Test
+    public void checkDurationGetXMLSchemaType() {
+        // DURATION
+        Duration duration = datatypeFactory.newDuration("P1Y1M1DT1H1M1S");
+        QName duration_xmlSchemaType = duration.getXMLSchemaType();
+        assertEquals(duration_xmlSchemaType, DatatypeConstants.DURATION, "Expected DatatypeConstants.DURATION, returned " + duration_xmlSchemaType.toString());
+
+        // DURATION_DAYTIME
+        Duration duration_dayTime = datatypeFactory.newDuration("P1DT1H1M1S");
+        QName duration_dayTime_xmlSchemaType = duration_dayTime.getXMLSchemaType();
+        assertEquals(duration_dayTime_xmlSchemaType, DatatypeConstants.DURATION_DAYTIME, "Expected DatatypeConstants.DURATION_DAYTIME, returned "
+                + duration_dayTime_xmlSchemaType.toString());
+
+        // DURATION_YEARMONTH
+        Duration duration_yearMonth = datatypeFactory.newDuration("P1Y1M");
+        QName duration_yearMonth_xmlSchemaType = duration_yearMonth.getXMLSchemaType();
+        assertEquals(duration_yearMonth_xmlSchemaType, DatatypeConstants.DURATION_YEARMONTH, "Expected DatatypeConstants.DURATION_YEARMONTH, returned "
+                + duration_yearMonth_xmlSchemaType.toString());
+
+    }
+
+
+    private final int undef = DatatypeConstants.FIELD_UNDEFINED;
+    private final BigInteger zero = BigInteger.ZERO;
+    private final BigInteger one = BigInteger.ONE;
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/datatype/ptests/FactoryNewInstanceTest.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 1999, 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 javax.xml.datatype.ptests;
+
+import static org.testng.Assert.assertNotNull;
+
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.Duration;
+
+import jaxp.library.JAXPDataProvider;
+import jaxp.library.JAXPBaseTest;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+/*
+ * @summary Tests for DatatypeFactory.newInstance(factoryClassName , classLoader)
+ */
+public class FactoryNewInstanceTest extends JAXPBaseTest {
+
+    private static final String DATATYPE_FACTORY_CLASSNAME = "com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl";
+
+    @DataProvider(name = "parameters")
+    public Object[][] getValidateParameters() {
+        return new Object[][] { { DATATYPE_FACTORY_CLASSNAME, null }, { DATATYPE_FACTORY_CLASSNAME, this.getClass().getClassLoader() } };
+    }
+
+    /*
+     * test for DatatypeFactory.newInstance(java.lang.String factoryClassName,
+     * java.lang.ClassLoader classLoader) factoryClassName points to correct
+     * implementation of javax.xml.datatype.DatatypeFactory , should return
+     * newInstance of DatatypeFactory
+     */
+    @Test(dataProvider = "parameters")
+    public void testNewInstance(String factoryClassName, ClassLoader classLoader) throws DatatypeConfigurationException {
+        DatatypeFactory dtf = DatatypeFactory.newInstance(DATATYPE_FACTORY_CLASSNAME, null);
+        Duration duration = dtf.newDuration(true, 1, 1, 1, 1, 1, 1);
+        assertNotNull(duration);
+    }
+
+
+    /*
+     * test for DatatypeFactory.newInstance(java.lang.String factoryClassName,
+     * java.lang.ClassLoader classLoader) factoryClassName is null , should
+     * throw DatatypeConfigurationException
+     */
+    @Test(expectedExceptions = DatatypeConfigurationException.class, dataProvider = "new-instance-neg", dataProviderClass = JAXPDataProvider.class)
+    public void testNewInstanceNeg(String factoryClassName, ClassLoader classLoader) throws DatatypeConfigurationException {
+        DatatypeFactory.newInstance(factoryClassName, classLoader);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/datatype/ptests/XMLGregorianCalendarTest.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,356 @@
+/*
+ * Copyright (c) 1999, 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 javax.xml.datatype.ptests;
+
+import static java.util.Calendar.HOUR;
+import static java.util.Calendar.MINUTE;
+import static java.util.Calendar.YEAR;
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertTrue;
+
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import java.util.TimeZone;
+
+import javax.xml.datatype.DatatypeConfigurationException;
+import javax.xml.datatype.DatatypeConstants;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.Duration;
+import javax.xml.datatype.XMLGregorianCalendar;
+
+import jaxp.library.JAXPBaseTest;
+
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+/*
+ * @bug 5049592 5041845 5048932 5064587 5040542 5049531 5049528
+ * @summary Class containing the test cases for XMLGregorianCalendar
+ */
+public class XMLGregorianCalendarTest extends JAXPBaseTest {
+
+    private DatatypeFactory datatypeFactory;
+
+    @BeforeClass
+    public void setup() throws DatatypeConfigurationException {
+        datatypeFactory = DatatypeFactory.newInstance();
+    }
+
+    @DataProvider(name = "valid-milliseconds")
+    public Object[][] getValidMilliSeconds() {
+        return new Object[][] { { 0 }, { 1 }, { 2 }, { 16 }, { 1000 }   };
+    }
+
+    /*
+     * Test DatatypeFactory.newXMLGregorianCalendar(..) with milliseconds > 1.
+     *
+     * Bug # 5049592
+     *
+     */
+    @Test(dataProvider = "valid-milliseconds")
+    public void checkNewCalendar(int ms) {
+        // valid milliseconds
+        XMLGregorianCalendar calendar = datatypeFactory.newXMLGregorianCalendar(2004, // year
+                6, // month
+                2, // day
+                19, // hour
+                20, // minute
+                59, // second
+                ms, // milliseconds
+                840 // timezone
+                );
+        // expected success
+
+        assertEquals(calendar.getMillisecond(), ms);
+    }
+
+    /*
+     * Test DatatypeFactory.newXMLGregorianCalendarTime(..).
+     *
+     * Bug # 5049592
+     */
+    @Test(dataProvider = "valid-milliseconds")
+    public void checkNewTime(int ms) {
+        // valid milliseconds
+        XMLGregorianCalendar calendar2 = datatypeFactory.newXMLGregorianCalendarTime(19, // hour
+                20, // minute
+                59, // second
+                ms, // milliseconds
+                840 // timezone
+                );
+        // expected success
+
+        assertEquals(calendar2.getMillisecond(), ms);
+    }
+
+    @DataProvider(name = "invalid-milliseconds")
+    public Object[][] getInvalidMilliSeconds() {
+        return new Object[][] { { -1 }, { 1001 } };
+    }
+
+    /*
+     * Test DatatypeFactory.newXMLGregorianCalendar(..).
+     *
+     * Bug # 5049592 IllegalArgumentException is thrown if milliseconds < 0 or >
+     * 1001.
+     *
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "invalid-milliseconds")
+    public void checkNewCalendarNeg(int milliseconds) {
+        // invalid milliseconds
+        datatypeFactory.newXMLGregorianCalendar(2004, // year
+                6, // month
+                2, // day
+                19, // hour
+                20, // minute
+                59, // second
+                milliseconds, // milliseconds
+                840 // timezone
+                );
+    }
+
+    /*
+     * Test DatatypeFactory.newXMLGregorianCalendarTime(..).
+     *
+     * Bug # 5049592 IllegalArgumentException is thrown if milliseconds < 0 or >
+     * 1001.
+     *
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "invalid-milliseconds")
+    public void checkNewTimeNeg(int milliseconds) {
+        // invalid milliseconds
+        datatypeFactory.newXMLGregorianCalendarTime(19, // hour
+                20, // minute
+                59, // second
+                milliseconds, // milliseconds
+                840 // timezone
+                );
+    }
+
+    @DataProvider(name = "data-for-add")
+    public Object[][] getDataForAdd() {
+        return new Object[][] {
+                //calendar1, calendar2, duration
+                { "1999-12-31T00:00:00Z", "2000-01-01T00:00:00Z", "P1D" },
+                { "2000-12-31T00:00:00Z", "2001-01-01T00:00:00Z", "P1D" },
+                { "1998-12-31T00:00:00Z", "1999-01-01T00:00:00Z", "P1D" },
+                { "2001-12-31T00:00:00Z", "2002-01-01T00:00:00Z", "P1D" },
+                { "2003-04-11T00:00:00Z", "2003-04-12T00:00:00Z", "P1D" },
+                { "2003-04-11T00:00:00Z", "2003-04-14T00:00:00Z", "P3D" },
+                { "2003-04-30T00:00:00Z", "2003-05-01T00:00:00Z", "P1D" },
+                { "2003-02-28T00:00:00Z", "2003-03-01T00:00:00Z", "P1D" },
+                { "2000-02-29T00:00:00Z", "2000-03-01T00:00:00Z", "P1D" },
+                { "2000-02-28T00:00:00Z", "2000-02-29T00:00:00Z", "P1D" },
+                { "1998-01-11T00:00:00Z", "1998-04-11T00:00:00Z", "P90D" },
+                { "1999-05-11T00:00:00Z", "2002-05-11T00:00:00Z", "P1096D" }};
+    }
+
+    /*
+     * Test XMLGregorianCalendar.add(Duration).
+     *
+     */
+    @Test(dataProvider = "data-for-add")
+    public void checkAddDays(String cal1, String cal2, String dur) {
+
+        XMLGregorianCalendar calendar1 = datatypeFactory.newXMLGregorianCalendar(cal1);
+        XMLGregorianCalendar calendar2 = datatypeFactory.newXMLGregorianCalendar(cal2);
+
+        Duration duration = datatypeFactory.newDuration(dur);
+
+        XMLGregorianCalendar calendar1Clone = (XMLGregorianCalendar)calendar1.clone();
+
+        calendar1Clone.add(duration);
+        assertEquals(calendar1Clone, calendar2);
+
+        calendar2.add(duration.negate());
+        assertEquals(calendar2, calendar1);
+
+    }
+
+    @DataProvider(name = "gMonth")
+    public Object[][] getGMonth() {
+        return new Object[][] {
+                { "2000-02" },
+                { "2000-03" },
+                { "2018-02" }};
+    }
+    /*
+     * Test XMLGregorianCalendar#isValid(). for gMonth
+     *
+     * Bug # 5041845
+     *
+     */
+    @Test(dataProvider = "gMonth")
+    public void checkIsValid(String month) {
+
+        XMLGregorianCalendar gMonth = datatypeFactory.newXMLGregorianCalendar(month);
+        gMonth.setYear(null);
+        Assert.assertTrue(gMonth.isValid(), gMonth.toString() + " should isValid");
+
+    }
+
+    @DataProvider(name = "lexical01")
+    public Object[][] getLexicalRepresentForNormalize01() {
+        return new Object[][] { { "2000-01-16T12:00:00Z" }, { "2000-01-16T12:00:00" } };
+    }
+
+    /*
+     * Test XMLGregorianCalendar#normalize(...).
+     *
+     * Bug # 5048932 XMLGregorianCalendar.normalize works
+     *
+     */
+    @Test(dataProvider = "lexical01")
+    public void checkNormalize01(String lexical) {
+        XMLGregorianCalendar lhs = datatypeFactory.newXMLGregorianCalendar(lexical);
+        lhs.normalize();
+    }
+
+    @DataProvider(name = "lexical02")
+    public Object[][] getLexicalRepresentForNormalize02() {
+        return new Object[][] { { "2000-01-16T00:00:00.01Z" }, { "2000-01-16T00:00:00.01" }, { "13:20:00" } };
+    }
+
+    /*
+     * Test XMLGregorianCalendar#normalize(...).
+     *
+     * Bug # 5064587 XMLGregorianCalendar.normalize shall not change timezone
+     *
+     */
+    @Test(dataProvider = "lexical02")
+    public void checkNormalize02(String lexical) {
+        XMLGregorianCalendar orig = datatypeFactory.newXMLGregorianCalendar(lexical);
+        XMLGregorianCalendar normalized = datatypeFactory.newXMLGregorianCalendar(lexical).normalize();
+
+        assertEquals(normalized.getTimezone(), orig.getTimezone());
+        assertEquals(normalized.getMillisecond(), orig.getMillisecond());
+    }
+
+    /*
+     * Test XMLGregorianCalendar#toGregorianCalendar( TimeZone timezone, Locale
+     * aLocale, XMLGregorianCalendar defaults)
+     *
+     * Bug # 5040542 the defaults XMLGregorianCalendar parameter shall take
+     * effect
+     *
+     */
+    @Test
+    public void checkToGregorianCalendar01() {
+
+        XMLGregorianCalendar time_16_17_18 = datatypeFactory.newXMLGregorianCalendar("16:17:18");
+        XMLGregorianCalendar date_2001_02_03 = datatypeFactory.newXMLGregorianCalendar("2001-02-03");
+        GregorianCalendar calendar = date_2001_02_03.toGregorianCalendar(null, null, time_16_17_18);
+
+        int year = calendar.get(YEAR);
+        int minute = calendar.get(MINUTE);
+
+        assertTrue((year == 2001 && minute == 17), " expecting year == 2001, minute == 17" + ", result is year == " + year + ", minute == " + minute);
+
+
+        calendar = time_16_17_18.toGregorianCalendar(null, null, date_2001_02_03);
+
+        year = calendar.get(YEAR);
+        minute = calendar.get(MINUTE);
+
+        assertTrue((year == 2001 && minute == 17), " expecting year == 2001, minute == 17" + ", result is year == " + year + ", minute == " + minute);
+
+
+        date_2001_02_03.setMinute(3);
+        date_2001_02_03.setYear(null);
+
+        XMLGregorianCalendar date_time = datatypeFactory.newXMLGregorianCalendar("2003-04-11T02:13:01Z");
+
+        calendar = date_2001_02_03.toGregorianCalendar(null, null, date_time);
+
+        year = calendar.get(YEAR);
+        minute = calendar.get(MINUTE);
+        int hour = calendar.get(HOUR);
+
+        assertTrue((year == 2003 && hour == 2 && minute == 3), " expecting year == 2003, hour == 2, minute == 3" + ", result is year == " + year + ", hour == " + hour + ", minute == " + minute);
+
+
+    }
+
+    /*
+     * Test XMLGregorianCalendar#toGregorianCalendar( TimeZone timezone, Locale
+     * aLocale, XMLGregorianCalendar defaults) with the 'defaults' parameter
+     * being null.
+     *
+     * Bug # 5049531 XMLGregorianCalendar.toGregorianCalendar(..) can accept
+     * 'defaults' is null
+     *
+     */
+    @Test
+    public void checkToGregorianCalendar02() {
+
+        XMLGregorianCalendar calendar = datatypeFactory.newXMLGregorianCalendar("2004-05-19T12:00:00+06:00");
+        calendar.toGregorianCalendar(TimeZone.getDefault(), Locale.getDefault(), null);
+    }
+
+    @DataProvider(name = "calendar")
+    public Object[][] getXMLGregorianCalendarData() {
+        return new Object[][] {
+                // year, month, day, hour, minute, second
+                { 1970, 1, 1, 0, 0, 0 }, // DATETIME
+                { 1970, 1, 1, undef, undef, undef }, // DATE
+                { undef, undef, undef, 1, 0, 0 }, // TIME
+                { 1970, 1, undef, undef, undef, undef }, // GYEARMONTH
+                { undef, 1, 1, undef, undef, undef }, // GMONTHDAY
+                { 1970, undef, undef, undef, undef, undef }, // GYEAR
+                { undef, 1, undef, undef, undef, undef }, // GMONTH
+                { undef, undef, 1, undef, undef, undef } // GDAY
+        };
+    }
+
+    /*
+     * Test XMLGregorianCalendar#toString()
+     *
+     * Bug # 5049528
+     *
+     */
+    @Test(dataProvider = "calendar")
+    public void checkToStringPos(final int year, final int month, final int day, final int hour, final int minute, final int second) {
+        XMLGregorianCalendar calendar = datatypeFactory.newXMLGregorianCalendar(year, month, day, hour, minute, second, undef, undef);
+        calendar.toString();
+    }
+
+    /*
+     * Negative Test XMLGregorianCalendar#toString()
+     *
+     * Bug # 5049528 XMLGregorianCalendar.toString throws IllegalStateException
+     * if all parameters are undef
+     *
+     */
+    @Test(expectedExceptions = IllegalStateException.class)
+    public void checkToStringNeg() {
+        XMLGregorianCalendar calendar = datatypeFactory.newXMLGregorianCalendar(undef, undef, undef, undef, undef, undef, undef, undef);
+        // expected to fail
+        calendar.toString();
+    }
+
+    private final int undef = DatatypeConstants.FIELD_UNDEFINED;
+
+}
--- a/jaxp/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/DocumentBuilderFactoryTest.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/DocumentBuilderFactoryTest.java	Wed Feb 18 19:27:49 2015 -0800
@@ -26,27 +26,38 @@
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertNull;
+
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FilePermission;
 import java.io.FileReader;
+
 import static javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI;
+
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.parsers.SAXParser;
 import javax.xml.parsers.SAXParserFactory;
+
 import static javax.xml.parsers.ptests.ParserTestConst.GOLDEN_DIR;
 import static javax.xml.parsers.ptests.ParserTestConst.XML_DIR;
+
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.sax.SAXResult;
+
+import jaxp.library.JAXPDataProvider;
 import jaxp.library.JAXPFileBaseTest;
 import static jaxp.library.JAXPTestUtilities.USER_DIR;
 import static jaxp.library.JAXPTestUtilities.compareWithGold;
 import static org.testng.Assert.assertFalse;
 import static org.testng.Assert.assertTrue;
+
+import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
@@ -60,6 +71,52 @@
  */
 public class DocumentBuilderFactoryTest extends JAXPFileBaseTest {
     /**
+     * DocumentBuilderFactory implementation class name.
+     */
+    private static final String DOCUMENT_BUILDER_FACTORY_CLASSNAME = "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl";
+
+    /**
+     * Provide valid DocumentBuilderFactory instantiation parameters.
+     *
+     * @return a data provider contains DocumentBuilderFactory instantiation parameters.
+     */
+    @DataProvider(name = "parameters")
+    public Object[][] getValidateParameters() {
+        return new Object[][] { { DOCUMENT_BUILDER_FACTORY_CLASSNAME, null }, { DOCUMENT_BUILDER_FACTORY_CLASSNAME, this.getClass().getClassLoader() } };
+    }
+
+    /**
+     * Test for DocumentBuilderFactory.newInstance(java.lang.String
+     * factoryClassName, java.lang.ClassLoader classLoader) factoryClassName
+     * points to correct implementation of
+     * javax.xml.parsers.DocumentBuilderFactory , should return newInstance of
+     * DocumentBuilderFactory
+     *
+     * @param factoryClassName
+     * @param classLoader
+     * @throws ParserConfigurationException
+     */
+    @Test(dataProvider = "parameters")
+    public void testNewInstance(String factoryClassName, ClassLoader classLoader) throws ParserConfigurationException {
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(factoryClassName, classLoader);
+        DocumentBuilder builder = dbf.newDocumentBuilder();
+        assertNotNull(builder);
+    }
+
+    /**
+     * test for DocumentBuilderFactory.newInstance(java.lang.String
+     * factoryClassName, java.lang.ClassLoader classLoader) factoryClassName is
+     * null , should throw FactoryConfigurationError
+     *
+     * @param factoryClassName
+     * @param classLoader
+     */
+    @Test(expectedExceptions = FactoryConfigurationError.class, dataProvider = "new-instance-neg", dataProviderClass = JAXPDataProvider.class)
+    public void testNewInstanceNeg(String factoryClassName, ClassLoader classLoader) {
+        DocumentBuilderFactory.newInstance(factoryClassName, classLoader);
+    }
+
+    /**
      * Test the default functionality of schema support method.
      * @throws Exception If any errors occur.
      */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/parsers/ptests/SAXFactoryNewInstanceTest.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 1999, 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 javax.xml.parsers.ptests;
+
+import static org.testng.Assert.assertNotNull;
+
+import javax.xml.parsers.FactoryConfigurationError;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+
+import jaxp.library.JAXPDataProvider;
+import jaxp.library.JAXPBaseTest;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import org.xml.sax.SAXException;
+
+/*
+ * @summary Tests for SAXParserFactory.newInstance(factoryClassName , classLoader)
+ */
+public class SAXFactoryNewInstanceTest extends JAXPBaseTest {
+
+    private static final String SAXPARSER_FACTORY_CLASSNAME = "com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl";
+
+    @DataProvider(name = "parameters")
+    public Object[][] getValidateParameters() {
+        return new Object[][] { { SAXPARSER_FACTORY_CLASSNAME, null }, { SAXPARSER_FACTORY_CLASSNAME, this.getClass().getClassLoader() } };
+    }
+
+    /*
+     * test for SAXParserFactory.newInstance(java.lang.String factoryClassName,
+     * java.lang.ClassLoader classLoader) factoryClassName points to correct
+     * implementation of javax.xml.parsers.SAXParserFactory , should return
+     * newInstance of SAXParserFactory
+     */
+    @Test(dataProvider = "parameters")
+    public void testNewInstance(String factoryClassName, ClassLoader classLoader) throws ParserConfigurationException, SAXException {
+        SAXParserFactory spf = SAXParserFactory.newInstance(factoryClassName, classLoader);
+        SAXParser sp = spf.newSAXParser();
+        assertNotNull(sp);
+    }
+
+    /*
+     * test for SAXParserFactory.newInstance(java.lang.String factoryClassName,
+     * java.lang.ClassLoader classLoader) factoryClassName is null , should
+     * throw FactoryConfigurationError
+     */
+    @Test(expectedExceptions = FactoryConfigurationError.class, dataProvider = "new-instance-neg", dataProviderClass = JAXPDataProvider.class)
+    public void testNewInstanceNeg(String factoryClassName, ClassLoader classLoader) {
+        SAXParserFactory.newInstance(factoryClassName, classLoader);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/stream/ptests/XMLEventFactoryNewInstanceTest.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 1999, 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 javax.xml.stream.ptests;
+
+import static org.testng.Assert.assertNotNull;
+
+import javax.xml.stream.XMLEventFactory;
+
+import jaxp.library.JAXPDataProvider;
+import jaxp.library.JAXPBaseTest;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+/*
+ * @summary Tests for XMLEventFactory.newFactory(factoryId , classLoader)
+ */
+public class XMLEventFactoryNewInstanceTest extends JAXPBaseTest {
+
+    private static final String XMLEVENT_FACTORY_CLASSNAME = "com.sun.xml.internal.stream.events.XMLEventFactoryImpl";
+    private static final String XMLEVENT_FACRORY_ID = "javax.xml.stream.XMLEventFactory";
+
+    @DataProvider(name = "parameters")
+    public Object[][] getValidateParameters() {
+        return new Object[][] { { XMLEVENT_FACRORY_ID, null }, { XMLEVENT_FACRORY_ID, this.getClass().getClassLoader() } };
+    }
+
+    /*
+     * test for XMLEventFactory.newFactory(java.lang.String factoryClassName,
+     * java.lang.ClassLoader classLoader) factoryClassName points to correct
+     * implementation of javax.xml.stream.XMLEventFactory , should return
+     * newInstance of XMLEventFactory
+     */
+    @Test(dataProvider = "parameters")
+    public void testNewFactory(String factoryId, ClassLoader classLoader) {
+        setSystemProperty(XMLEVENT_FACRORY_ID, XMLEVENT_FACTORY_CLASSNAME);
+        try {
+            XMLEventFactory xef = XMLEventFactory.newFactory(factoryId, classLoader);
+            assertNotNull(xef);
+        } finally {
+            setSystemProperty(XMLEVENT_FACRORY_ID, null);
+        }
+    }
+
+    /*
+     * test for XMLEventFactory.newFactory(java.lang.String factoryClassName,
+     * java.lang.ClassLoader classLoader) factoryClassName is null , should
+     * throw NullPointerException
+     */
+    @Test(expectedExceptions = NullPointerException.class, dataProvider = "new-instance-neg", dataProviderClass = JAXPDataProvider.class)
+    public void testNewFactoryNeg(String factoryId, ClassLoader classLoader) {
+        XMLEventFactory.newFactory(null, null);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/stream/ptests/XMLInputFactoryNewInstanceTest.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,76 @@
+/*
+ * Copyright (c) 1999, 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 javax.xml.stream.ptests;
+
+import static org.testng.Assert.assertNotNull;
+
+import javax.xml.stream.XMLInputFactory;
+
+import jaxp.library.JAXPDataProvider;
+import jaxp.library.JAXPBaseTest;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+/*
+ * @summary Tests for XMLInputFactory.newFactory(factoryId , classLoader)
+ */
+public class XMLInputFactoryNewInstanceTest extends JAXPBaseTest {
+
+    private static final String XMLINPUT_FACTORY_CLASSNAME = "com.sun.xml.internal.stream.XMLInputFactoryImpl";
+    private static final String XMLINPUT_FACRORY_ID = "javax.xml.stream.XMLInputFactory";
+
+    @DataProvider(name = "parameters")
+    public Object[][] getValidateParameters() {
+        return new Object[][] { { XMLINPUT_FACRORY_ID, null }, { XMLINPUT_FACRORY_ID, this.getClass().getClassLoader() } };
+    }
+
+    /*
+     * test for XMLInputFactory.newFactory(java.lang.String factoryId,
+     * java.lang.ClassLoader classLoader) factoryClassName points to correct
+     * implementation of javax.xml.stream.XMLInputFactory , should return
+     * newInstance of XMLInputFactory
+     */
+    @Test(dataProvider = "parameters")
+    public void testNewFactory(String factoryId, ClassLoader classLoader) {
+        setSystemProperty(XMLINPUT_FACRORY_ID, XMLINPUT_FACTORY_CLASSNAME);
+        try {
+            XMLInputFactory xif = XMLInputFactory.newFactory(factoryId, classLoader);
+            assertNotNull(xif);
+        } finally {
+            setSystemProperty(XMLINPUT_FACRORY_ID, null);
+        }
+    }
+
+    /*
+     * test for XMLInputFactory.newFactory(java.lang.String factoryClassName,
+     * java.lang.ClassLoader classLoader) factoryClassName is null , should
+     * throw NullPointerException
+     */
+    @Test(expectedExceptions = NullPointerException.class, dataProvider = "new-instance-neg", dataProviderClass = JAXPDataProvider.class)
+    public void testNewFactoryNeg(String factoryId, ClassLoader classLoader) {
+        XMLInputFactory.newFactory(factoryId, classLoader);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/transform/ptests/Bug6384418Test.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 1999, 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 javax.xml.transform.ptests;
+
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import jaxp.library.JAXPFileBaseTest;
+import static javax.xml.transform.ptests.TransformerTestConst.XML_DIR;
+
+import org.testng.annotations.Test;
+import org.w3c.dom.Document;
+
+/*
+ * @bug 6384418
+ * @summary verify the transforming won't throw any exception
+ */
+public class Bug6384418Test extends JAXPFileBaseTest {
+
+    @Test
+    public void test() throws Exception {
+        TransformerFactory tfactory = TransformerFactory.newInstance();
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        dbf.setNamespaceAware(true);
+        DocumentBuilder db = dbf.newDocumentBuilder();
+        Document document = db.parse(new File(XML_DIR + "dataentry.xsl"));
+        DOMSource domSource = new DOMSource(document);
+
+        Transformer transformer = tfactory.newTransformer(domSource);
+        StreamSource streamSource = new StreamSource(new File(XML_DIR + "test.xml"));
+        StreamResult streamResult = new StreamResult(new ByteArrayOutputStream());
+        transformer.transform(streamSource, streamResult);
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/transform/ptests/TransformTest.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,383 @@
+/*
+ * Copyright (c) 1999, 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 javax.xml.transform.ptests;
+
+import static javax.xml.transform.ptests.TransformerTestConst.XML_DIR;
+
+import java.io.BufferedWriter;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.function.Supplier;
+
+import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.stream.XMLEventWriter;
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerConfigurationException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.dom.DOMSource;
+import javax.xml.transform.sax.SAXResult;
+import javax.xml.transform.sax.SAXSource;
+import javax.xml.transform.stax.StAXResult;
+import javax.xml.transform.stax.StAXSource;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+
+import jaxp.library.JAXPFileBaseTest;
+
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+import org.w3c.dom.Document;
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+
+/*
+ * @summary Tests for variable combination of Transformer.transform(Source, Result)
+ */
+@Test(singleThreaded = true)
+public class TransformTest extends JAXPFileBaseTest {
+
+    /*
+     * Initialize the share objects.
+     */
+    @BeforeClass
+    public void setup() throws Exception {
+        ifac = XMLInputFactory.newInstance();
+        ofac = XMLOutputFactory.newInstance();
+        tfac = TransformerFactory.newInstance();
+
+        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+        dbf.setNamespaceAware(true);
+        db = dbf.newDocumentBuilder();
+
+        xml = Files.readAllBytes(Paths.get(XML_DIR + "cities.xml"));
+        template = Files.readAllBytes(Paths.get(XML_DIR + "cities.xsl"));
+
+        xmlDoc = db.parse(xmlInputStream());
+    }
+
+    @DataProvider(name = "input-provider")
+    public Object[][] prepareTestCombination() throws Exception {
+
+        Supplier<Source> staxStreamSource = () -> new StAXSource(getXMLStreamReader());
+        Supplier<Source> staxEventSource = this::getStAXEventSource;
+        Supplier<Source> domSource = () -> new DOMSource(xmlDoc);
+        Supplier<Source> saxSource = () -> new SAXSource(new InputSource(xmlInputStream()));
+        Supplier<Source> streamSource = () -> new StreamSource(xmlInputStream());
+
+        Supplier<Result> staxStreamResult = () -> new StAXResult(getXMLStreamWriter());
+        Supplier<Result> staxEventResult = () -> new StAXResult(getXMLEventWriter());
+        Supplier<Result> saxResult = this::getHandlerSAXResult;
+        Supplier<Result> streamResult = () -> new StreamResult(transOutputStream());
+
+        Transformer domTemplateTransformer = createTransformer(getDomTemplate());
+        Transformer saxTemplateTransformer = createTransformer(getSAXTemplate());
+        Transformer streamTemplateTransformer = createTransformer(getStreamTemplate());
+        Transformer noTemplateTransformer = createTransformer(null);
+        Transformer staxStreamTemplateTransformer = createTransformer(getStAXStreamTemplate());
+        Transformer staxEventTemplateTransformer = createTransformer(getStAXEventTemplate());
+
+        return new Object[][] {
+                // StAX Stream
+                { staxStreamSource, staxStreamResult, domTemplateTransformer },
+                { staxStreamSource, staxStreamResult, saxTemplateTransformer },
+                { staxStreamSource, staxStreamResult, streamTemplateTransformer },
+                { staxStreamSource, staxStreamResult, noTemplateTransformer },
+                { staxStreamSource, staxStreamResult, staxStreamTemplateTransformer },
+                { staxStreamSource, saxResult, domTemplateTransformer },
+                { staxStreamSource, streamResult, domTemplateTransformer },
+                { domSource, staxStreamResult, domTemplateTransformer },
+                { saxSource, staxStreamResult, domTemplateTransformer },
+                { streamSource, staxStreamResult, domTemplateTransformer },
+                { staxStreamSource, streamResult, saxTemplateTransformer },
+                { domSource, staxStreamResult, saxTemplateTransformer },
+                { saxSource, staxStreamResult, saxTemplateTransformer },
+                { streamSource, staxStreamResult, saxTemplateTransformer },
+                { staxStreamSource, streamResult, streamTemplateTransformer },
+                { domSource, staxStreamResult, streamTemplateTransformer },
+                { saxSource, staxStreamResult, streamTemplateTransformer },
+                { streamSource, staxStreamResult, streamTemplateTransformer },
+                // StAX Event
+                { staxEventSource, staxEventResult, domTemplateTransformer },
+                { staxEventSource, staxEventResult, saxTemplateTransformer },
+                { staxEventSource, staxEventResult, streamTemplateTransformer },
+                { staxEventSource, staxEventResult, noTemplateTransformer },
+                { staxEventSource, staxEventResult, staxEventTemplateTransformer },
+                { staxEventSource, saxResult, domTemplateTransformer },
+                { staxEventSource, streamResult, domTemplateTransformer },
+                { domSource, staxEventResult, domTemplateTransformer },
+                { saxSource, staxEventResult, domTemplateTransformer },
+                { streamSource, staxEventResult, domTemplateTransformer },
+                { staxEventSource, streamResult, saxTemplateTransformer },
+                { domSource, staxEventResult, saxTemplateTransformer },
+                { saxSource, staxEventResult, saxTemplateTransformer },
+                { streamSource, staxEventResult, saxTemplateTransformer },
+                { staxEventSource, streamResult, streamTemplateTransformer },
+                { domSource, staxEventResult, streamTemplateTransformer },
+                { saxSource, staxEventResult, streamTemplateTransformer },
+                { streamSource, staxEventResult, streamTemplateTransformer } };
+    }
+
+    /*
+     * run Transformer.transform(Source, Result)
+     */
+    @Test(dataProvider = "input-provider")
+    public void testTransform(Supplier<Source> src, Supplier<Result> res, Transformer transformer) throws Throwable {
+        try {
+            transformer.transform(src.get(), res.get());
+        } catch (WrapperException e) {
+            throw e.getCause();
+        }
+    }
+
+    private InputStream xmlInputStream() {
+        return new ByteArrayInputStream(xml);
+    }
+
+    private InputStream templateInputStream() {
+        return new ByteArrayInputStream(template);
+    }
+
+    private OutputStream transOutputStream() {
+        return new ByteArrayOutputStream(xml.length);
+    }
+
+    private XMLStreamReader getXMLStreamReader() {
+        try {
+            return ifac.createXMLStreamReader(xmlInputStream());
+        } catch (XMLStreamException e) {
+            throw new WrapperException(e);
+        }
+    }
+
+    private XMLStreamWriter getXMLStreamWriter() {
+        try {
+            return ofac.createXMLStreamWriter(transOutputStream());
+        } catch (XMLStreamException e) {
+            throw new WrapperException(e);
+        }
+    }
+
+    private StAXSource getStAXEventSource() {
+        try {
+            return new StAXSource(ifac.createXMLEventReader(xmlInputStream()));
+        } catch (XMLStreamException e) {
+            throw new WrapperException(e);
+        }
+    }
+
+    private XMLEventWriter getXMLEventWriter() {
+        try {
+            return ofac.createXMLEventWriter(transOutputStream());
+        } catch (XMLStreamException e) {
+            throw new WrapperException(e);
+        }
+    }
+
+    private SAXResult getHandlerSAXResult() {
+        SAXResult res = new SAXResult();
+        MyContentHandler myContentHandler = new MyContentHandler(transOutputStream());
+        res.setHandler(myContentHandler);
+        return res;
+    }
+
+    private Source getDomTemplate() throws SAXException, IOException {
+        return new DOMSource(db.parse(templateInputStream()));
+    }
+
+    private Source getSAXTemplate() {
+        return new SAXSource(new InputSource(templateInputStream()));
+    }
+
+    private Source getStreamTemplate() {
+        return new StreamSource(templateInputStream());
+    }
+
+    private Source getStAXStreamTemplate() throws XMLStreamException {
+        return new StAXSource(ifac.createXMLStreamReader(templateInputStream()));
+    }
+
+    private Source getStAXEventTemplate() throws XMLStreamException {
+        return new StAXSource(ifac.createXMLEventReader(templateInputStream()));
+    }
+
+    private Transformer createTransformer(Source templateSource) throws TransformerConfigurationException {
+        Transformer transformer = (templateSource == null) ? tfac.newTransformer() : tfac.newTransformer(templateSource);
+        transformer.setOutputProperty("indent", "yes");
+        return transformer;
+
+    }
+
+    private static class MyContentHandler implements ContentHandler {
+        private BufferedWriter bWriter;
+
+        public MyContentHandler(OutputStream os) {
+            bWriter = new BufferedWriter(new OutputStreamWriter(os));
+        }
+
+        public void setDocumentLocator(Locator locator) {
+        }
+
+        public void startDocument() throws SAXException {
+            String str = "startDocument";
+            try {
+                bWriter.write(str, 0, str.length());
+                bWriter.newLine();
+            } catch (IOException e) {
+                System.out.println("bWriter error");
+            }
+        }
+
+        public void endDocument() throws SAXException {
+            String str = "endDocument";
+            try {
+                bWriter.write(str, 0, str.length());
+                bWriter.newLine();
+                bWriter.flush();
+                bWriter.close();
+            } catch (IOException e) {
+                System.out.println("bWriter error");
+            }
+        }
+
+        public void startPrefixMapping(String prefix, String uri) throws SAXException {
+            String str = "startPrefixMapping: " + prefix + ", " + uri;
+            try {
+                bWriter.write(str, 0, str.length());
+                bWriter.newLine();
+            } catch (IOException e) {
+                System.out.println("bWriter error");
+            }
+        }
+
+        public void endPrefixMapping(String prefix) throws SAXException {
+            String str = "endPrefixMapping: " + prefix;
+            try {
+                bWriter.write(str, 0, str.length());
+                bWriter.newLine();
+            } catch (IOException e) {
+                System.out.println("bWriter error");
+            }
+        }
+
+        public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
+            StringBuilder str = new StringBuilder("startElement: ").append(namespaceURI).append(", ").append(namespaceURI).append(", ").append(qName).append(" : ");
+            int n = atts.getLength();
+            for (int i = 0; i < n; i++) {
+                str.append(", ").append(atts.getQName(i)).append(" : ").append(atts.getValue(i));
+            }
+
+            try {
+                bWriter.write(str.toString(), 0, str.length());
+                bWriter.newLine();
+            } catch (IOException e) {
+                System.out.println("bWriter error");
+            }
+        }
+
+        public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
+            String str = "endElement: " + namespaceURI + ", " + namespaceURI + ", " + qName;
+            try {
+                bWriter.write(str, 0, str.length());
+                bWriter.newLine();
+            } catch (IOException e) {
+                System.out.println("bWriter error");
+            }
+
+        }
+
+        public void characters(char ch[], int start, int length) throws SAXException {
+            String str = new String(ch, start, length);
+            try {
+                bWriter.write(str, 0, str.length());
+                bWriter.newLine();
+            } catch (IOException e) {
+                System.out.println("bWriter error");
+            }
+        }
+
+        public void ignorableWhitespace(char ch[], int start, int length) throws SAXException {
+            String str = "ignorableWhitespace";
+            try {
+                bWriter.write(str, 0, str.length());
+                bWriter.newLine();
+            } catch (IOException e) {
+                System.out.println("bWriter error");
+            }
+        }
+
+        public void processingInstruction(String target, String data) throws SAXException {
+            String str = "processingInstruction: " + target + ", " + target;
+            try {
+                bWriter.write(str, 0, str.length());
+                bWriter.newLine();
+            } catch (IOException e) {
+                System.out.println("bWriter error");
+            }
+        }
+
+        public void skippedEntity(String name) throws SAXException {
+            String str = "skippedEntity: " + name;
+            try {
+                bWriter.write(str, 0, str.length());
+                bWriter.newLine();
+            } catch (IOException e) {
+                System.out.println("bWriter error");
+            }
+        }
+    }
+
+    private static class WrapperException extends RuntimeException {
+        public WrapperException(Throwable cause) {
+            super(cause);
+        }
+    }
+
+    private XMLInputFactory ifac;
+    private XMLOutputFactory ofac;
+    private TransformerFactory tfac;
+    private DocumentBuilder db;
+    private byte[] xml;
+    private byte[] template;
+    private Document xmlDoc;
+
+}
--- a/jaxp/test/javax/xml/jaxp/functional/javax/xml/transform/ptests/TransformerFactoryTest.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/transform/ptests/TransformerFactoryTest.java	Wed Feb 18 19:27:49 2015 -0800
@@ -23,26 +23,79 @@
 package javax.xml.transform.ptests;
 
 import java.io.*;
-import java.io.FileOutputStream;
+
 import javax.xml.parsers.*;
 import javax.xml.transform.*;
 import javax.xml.transform.dom.*;
+
 import static javax.xml.transform.ptests.TransformerTestConst.GOLDEN_DIR;
 import static javax.xml.transform.ptests.TransformerTestConst.XML_DIR;
+
 import javax.xml.transform.stream.*;
+
+import jaxp.library.JAXPDataProvider;
 import jaxp.library.JAXPFileBaseTest;
 import static jaxp.library.JAXPTestUtilities.USER_DIR;
 import static jaxp.library.JAXPTestUtilities.compareWithGold;
+import static org.testng.Assert.assertNotNull;
 import static org.testng.Assert.assertTrue;
+
+import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 import org.w3c.dom.*;
 
 /**
  * Class containing the test cases for TransformerFactory API's
- * getAssociatedStyleSheet method.
+ * getAssociatedStyleSheet method and TransformerFactory.newInstance(factoryClassName , classLoader).
  */
 public class TransformerFactoryTest extends JAXPFileBaseTest {
     /**
+     * TransformerFactory implementation class name.
+     */
+    private static final String TRANSFORMER_FACTORY_CLASSNAME = "com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl";
+
+    /**
+     * Provide valid TransformerFactory instantiation parameters.
+     *
+     * @return a data provider contains TransformerFactory instantiation parameters.
+     */
+    @DataProvider(name = "parameters")
+    public Object[][] getValidateParameters() {
+        return new Object[][] { { TRANSFORMER_FACTORY_CLASSNAME, null }, { TRANSFORMER_FACTORY_CLASSNAME, this.getClass().getClassLoader() } };
+    }
+
+    /**
+     * Test for TransformerFactory.newInstance(java.lang.String
+     * factoryClassName, java.lang.ClassLoader classLoader) factoryClassName
+     * points to correct implementation of
+     * javax.xml.transform.TransformerFactory , should return newInstance of
+     * TransformerFactory
+     *
+     * @param factoryClassName
+     * @param classLoader
+     * @throws TransformerConfigurationException
+     */
+    @Test(dataProvider = "parameters")
+    public void testNewInstance(String factoryClassName, ClassLoader classLoader) throws TransformerConfigurationException {
+        TransformerFactory tf = TransformerFactory.newInstance(factoryClassName, classLoader);
+        Transformer transformer = tf.newTransformer();
+        assertNotNull(transformer);
+    }
+
+    /**
+     * Test for TransformerFactory.newInstance(java.lang.String
+     * factoryClassName, java.lang.ClassLoader classLoader) factoryClassName is
+     * null , should throw TransformerFactoryConfigurationError
+     *
+     * @param factoryClassName
+     * @param classLoader
+     */
+    @Test(expectedExceptions = TransformerFactoryConfigurationError.class, dataProvider = "new-instance-neg", dataProviderClass = JAXPDataProvider.class)
+    public void testNewInstanceNeg(String factoryClassName, ClassLoader classLoader) {
+        TransformerFactory.newInstance(factoryClassName, classLoader);
+    }
+
+    /**
      * This test case checks for the getAssociatedStylesheet method
      * of TransformerFactory.
      * The style sheet returned is then copied to an tfactory01.out
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/transform/xmlfiles/dataentry.xsl	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
+	<xsl:template match="dataentry">
+		<table cellspacing="0" cellpadding="0" width="85%" align="center" 
+class="color1" border="0">
+				<xsl:apply-templates/>
+		</table>
+
+	</xsl:template>
+	<xsl:template match="list">
+		<xsl:value-of select="self::node()[@multi='false']"/>
+                    
+               <!--
+		<xsl:if test="self::node()[@multi='false']">
+		<xsl:if test="self::node()">
+			FALSE<br/>
+		</xsl:if>
+                -->
+	</xsl:template>
+</xsl:stylesheet>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/transform/xmlfiles/test.xml	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,8 @@
+<appcapp>

+<dataentry>

+<list multi="false">

+  <name>TypeOfLifeApp</name>

+</list>

+</dataentry>

+</appcapp>

+
--- a/jaxp/test/javax/xml/jaxp/functional/javax/xml/validation/ptests/SchemaFactoryTest.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/validation/ptests/SchemaFactoryTest.java	Wed Feb 18 19:27:49 2015 -0800
@@ -46,6 +46,8 @@
 import javax.xml.validation.Schema;
 import javax.xml.validation.SchemaFactory;
 
+import jaxp.library.JAXPDataProvider;
+
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -81,6 +83,59 @@
         xml = Files.readAllBytes(Paths.get(XML_DIR + "test.xml"));
     }
 
+
+    @DataProvider(name = "parameters")
+    public Object[][] getValidateParameters() {
+        return new Object[][] { { W3C_XML_SCHEMA_NS_URI, SCHEMA_FACTORY_CLASSNAME, null },
+                { W3C_XML_SCHEMA_NS_URI, SCHEMA_FACTORY_CLASSNAME, this.getClass().getClassLoader() } };
+    }
+
+    /*
+     * test for SchemaFactory.newInstance(java.lang.String schemaLanguage,
+     * java.lang.String factoryClassName, java.lang.ClassLoader classLoader)
+     * factoryClassName points to correct implementation of
+     * javax.xml.validation.SchemaFactory , should return newInstance of
+     * SchemaFactory
+     */
+    @Test(dataProvider = "parameters")
+    public void testNewInstance(String schemaLanguage, String factoryClassName, ClassLoader classLoader) throws SAXException {
+        SchemaFactory sf = SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI, SCHEMA_FACTORY_CLASSNAME, null);
+        Schema schema = sf.newSchema();
+        assertNotNull(schema);
+    }
+
+    /*
+     * test for SchemaFactory.newInstance(java.lang.String schemaLanguage,
+     * java.lang.String factoryClassName, java.lang.ClassLoader classLoader)
+     * factoryClassName is null , should throw IllegalArgumentException
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class, dataProvider = "new-instance-neg", dataProviderClass = JAXPDataProvider.class)
+    public void testNewInstanceWithNullFactoryClassName(String factoryClassName, ClassLoader classLoader) {
+
+        SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI, factoryClassName, classLoader);
+    }
+
+    /*
+     * test for SchemaFactory.newInstance(java.lang.String schemaLanguage,
+     * java.lang.String factoryClassName, java.lang.ClassLoader classLoader)
+     * schemaLanguage is null , should throw NPE
+     */
+    @Test(expectedExceptions = NullPointerException.class)
+    public void testNewInstanceWithNullSchemaLanguage() {
+        SchemaFactory.newInstance(null, SCHEMA_FACTORY_CLASSNAME, this.getClass().getClassLoader());
+    }
+
+    /*
+     * test for SchemaFactory.newInstance(java.lang.String schemaLanguage,
+     * java.lang.String factoryClassName, java.lang.ClassLoader classLoader)
+     * schemaLanguage is empty , should throw IllegalArgumentException
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class)
+    public void testNewInstanceWithEmptySchemaLanguage() {
+        SchemaFactory.newInstance("", SCHEMA_FACTORY_CLASSNAME, this.getClass().getClassLoader());
+    }
+
+
     @Test(expectedExceptions = SAXParseException.class)
     public void testNewSchemaDefault() throws SAXException, IOException {
         validate(sf.newSchema());
@@ -288,6 +343,8 @@
 
     private static final String UNRECOGNIZED_NAME = "http://xml.org/sax/features/namespace-prefixes";
 
+    private static final String SCHEMA_FACTORY_CLASSNAME = "com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory";
+
     private SchemaFactory sf;
     private byte[] xsd1;
     private byte[] xsd2;
--- a/jaxp/test/javax/xml/jaxp/functional/javax/xml/xpath/ptests/XPathFactoryTest.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxp/test/javax/xml/jaxp/functional/javax/xml/xpath/ptests/XPathFactoryTest.java	Wed Feb 18 19:27:49 2015 -0800
@@ -24,10 +24,16 @@
 package javax.xml.xpath.ptests;
 
 import static javax.xml.xpath.XPathConstants.DOM_OBJECT_MODEL;
+
+import javax.xml.xpath.XPath;
 import javax.xml.xpath.XPathFactory;
 import javax.xml.xpath.XPathFactoryConfigurationException;
+
+import jaxp.library.JAXPDataProvider;
 import jaxp.library.JAXPBaseTest;
-import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.Assert.assertNotNull;
+
+import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
 /**
@@ -45,6 +51,78 @@
     private static final String INVALID_URL = "http://java.sun.com/jaxp/xpath/dom1";
 
     /**
+     * XPathFactory implementation class name.
+     */
+    private static final String XPATH_FACTORY_CLASSNAME = "com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl";
+
+
+    /**
+     * Provide valid XPathFactory instantiation parameters.
+     *
+     * @return a data provider contains XPathFactory instantiation parameters.
+     */
+    @DataProvider(name = "parameters")
+    public Object[][] getValidateParameters() {
+        return new Object[][] { { VALID_URL, XPATH_FACTORY_CLASSNAME, null }, { VALID_URL, XPATH_FACTORY_CLASSNAME, this.getClass().getClassLoader() } };
+    }
+
+    /**
+     * Test for XPathFactory.newInstance(java.lang.String uri, java.lang.String
+     * factoryClassName, java.lang.ClassLoader classLoader) factoryClassName
+     * points to correct implementation of javax.xml.xpath.XPathFactory , should
+     * return newInstance of XPathFactory
+     *
+     * @param uri
+     * @param factoryClassName
+     * @param classLoader
+     * @throws XPathFactoryConfigurationException
+     */
+    @Test(dataProvider = "parameters")
+    public void testNewInstance(String uri, String factoryClassName, ClassLoader classLoader) throws XPathFactoryConfigurationException {
+        XPathFactory xpf = XPathFactory.newInstance(uri, factoryClassName, classLoader);
+        XPath xpath = xpf.newXPath();
+        assertNotNull(xpath);
+    }
+
+    /**
+     * Test for XPathFactory.newInstance(java.lang.String uri, java.lang.String
+     * factoryClassName, java.lang.ClassLoader classLoader)
+     *
+     * @param factoryClassName
+     * @param classLoader
+     * @throws XPathFactoryConfigurationException
+     *             is expected when factoryClassName is null
+     */
+    @Test(expectedExceptions = XPathFactoryConfigurationException.class, dataProvider = "new-instance-neg", dataProviderClass = JAXPDataProvider.class)
+    public void testNewInstanceWithNullFactoryClassName(String factoryClassName, ClassLoader classLoader) throws XPathFactoryConfigurationException {
+        XPathFactory.newInstance(VALID_URL, factoryClassName, classLoader);
+    }
+
+    /**
+     * Test for XPathFactory.newInstance(java.lang.String uri, java.lang.String
+     * factoryClassName, java.lang.ClassLoader classLoader) uri is null , should
+     * throw NPE
+     *
+     * @throws XPathFactoryConfigurationException
+     */
+    @Test(expectedExceptions = NullPointerException.class)
+    public void testNewInstanceWithNullUri() throws XPathFactoryConfigurationException {
+        XPathFactory.newInstance(null, XPATH_FACTORY_CLASSNAME, this.getClass().getClassLoader());
+    }
+
+    /**
+     * Test for XPathFactory.newInstance(java.lang.String uri, java.lang.String
+     * factoryClassName, java.lang.ClassLoader classLoader)
+     *
+     * @throws IllegalArgumentException
+     *             is expected when uri is empty
+     */
+    @Test(expectedExceptions = IllegalArgumentException.class)
+    public void testNewInstanceWithEmptyUri() throws XPathFactoryConfigurationException {
+        XPathFactory.newInstance("", XPATH_FACTORY_CLASSNAME, this.getClass().getClassLoader());
+    }
+
+    /**
      * Test for constructor - XPathFactory.newInstance().
      */
     @Test
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxp/test/javax/xml/jaxp/libs/jaxp/library/JAXPDataProvider.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,38 @@
+/*
+ * 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 jaxp.library;
+
+import org.testng.annotations.DataProvider;
+
+/**
+ * Provide invalid parameters for negative testing Factory.newInstance.
+ */
+public class JAXPDataProvider {
+
+    @DataProvider(name = "new-instance-neg")
+    public static Object[][] getNewInstanceNeg() {
+        return new Object[][] { { null, null }, { null, JAXPDataProvider.class.getClassLoader() } };
+    }
+
+}
--- a/jaxws/.hgtags	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/.hgtags	Wed Feb 18 19:27:49 2015 -0800
@@ -294,3 +294,5 @@
 64ca52b0bda8028636e4ccafbe1107befcdda47d jdk9-b46
 6c17d648d03e4bf4729c3645f8db55d34115e0b7 jdk9-b47
 33e7e699804892c0496adf60ad67cc12855aeb61 jdk9-b48
+435a49db1de0589acc86b2cc5fd61d546f94b56c jdk9-b49
+45a30e7ee623031a1532685512dd2c2d8e8fa0ad jdk9-b50
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/JAXBContext.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/JAXBContext.java	Wed Feb 18 19:27:49 2015 -0800
@@ -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
@@ -45,14 +45,14 @@
  * specialized forms of the method available:
  *
  * <ul>
- *   <li>{@link #newInstance(String,ClassLoader) JAXBContext.newInstance( "com.acme.foo:com.acme.bar" )} <br/>
+ *   <li>{@link #newInstance(String,ClassLoader) JAXBContext.newInstance( "com.acme.foo:com.acme.bar" )} <br>
  *   The JAXBContext instance is initialized from a list of colon
  *   separated Java package names. Each java package contains
  *   JAXB mapped classes, schema-derived classes and/or user annotated
  *   classes. Additionally, the java package may contain JAXB package annotations
  *   that must be processed. (see JLS, Section 7.4.1 "Named Packages").
  *   </li>
- *   <li>{@link #newInstance(Class...) JAXBContext.newInstance( com.acme.foo.Foo.class )} <br/>
+ *   <li>{@link #newInstance(Class...) JAXBContext.newInstance( com.acme.foo.Foo.class )} <br>
  *    The JAXBContext instance is initialized with class(es)
  *    passed as parameter(s) and classes that are statically reachable from
  *    these class(es). See {@link #newInstance(Class...)} for details.
@@ -64,8 +64,8 @@
  * class containing the following method signatures:</i>
  *
  * <pre>
- * public static JAXBContext createContext( String contextPath, ClassLoader classLoader, Map&lt;String,Object> properties ) throws JAXBException
- * public static JAXBContext createContext( Class[] classes, Map&lt;String,Object> properties ) throws JAXBException
+ * public static JAXBContext createContext( String contextPath, ClassLoader classLoader, Map&lt;String,Object&gt; properties ) throws JAXBException
+ * public static JAXBContext createContext( Class[] classes, Map&lt;String,Object&gt; properties ) throws JAXBException
  * </pre>
  *
  * <p><i>
@@ -256,7 +256,7 @@
  * @author <ul><li>Ryan Shoemaker, Sun Microsystems, Inc.</li><li>Kohsuke Kawaguchi, Sun Microsystems, Inc.</li><li>Joe Fialli, Sun Microsystems, Inc.</li></ul>
  * @see Marshaller
  * @see Unmarshaller
- * @see S 7.4.1 "Named Packages" in Java Language Specification</a>
+ * @see <a href="http://docs.oracle.com/javase/specs/jls/se7/html/jls-7.html#jls-7.4.1">S 7.4.1 "Named Packages" in Java Language Specification</a>
  * @since 1.6, JAXB 1.0
  */
 public abstract class JAXBContext {
@@ -352,7 +352,7 @@
      * <p>
      * To maintain compatibility with JAXB 1.0 schema to java
      * interface/implementation binding, enabled by schema customization
-     * <tt>&lt;jaxb:globalBindings valueClass="false"></tt>,
+     * <tt>&lt;jaxb:globalBindings valueClass="false"&gt;</tt>,
      * the JAXB provider will ensure that each package on the context path
      * has a <tt>jaxb.properties</tt> file which contains a value for the
      * <tt>javax.xml.bind.context.factory</tt> property and that all values
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/JAXBException.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/JAXBException.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -48,7 +48,7 @@
      * Exception reference
      *
      */
-    private Throwable linkedException;
+    private volatile Throwable linkedException;
 
     static final long serialVersionUID = -5621384651494307979L;
 
@@ -133,7 +133,7 @@
      *                  indicates that the linked exception does not exist or
      *                  is unknown).
      */
-    public synchronized void setLinkedException( Throwable exception ) {
+    public void setLinkedException( Throwable exception ) {
         this.linkedException = exception;
     }
 
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/JAXBIntrospector.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/JAXBIntrospector.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -51,7 +51,7 @@
      * <ol>
      *   <li>It is an instance of <code>javax.xml.bind.JAXBElement</code>.</li>
      *   <li>The class of <code>object</code> is annotated with
-     *       <code>&#64XmlRootElement</code>.
+     *       <code>&#64;XmlRootElement</code>.
      *   </li>
      * </ol>
      *
@@ -74,7 +74,7 @@
      *
      * <p>Convenience method to abstract whether working with either
      *    a javax.xml.bind.JAXBElement instance or an instance of
-     *    <tt>&#64XmlRootElement</tt> annotated Java class.</p>
+     *    <tt>&#64;XmlRootElement</tt> annotated Java class.</p>
      *
      * @param jaxbElement  object that #isElement(Object) returns true.
      *
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/Marshaller.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/Marshaller.java	Wed Feb 18 19:27:49 2015 -0800
@@ -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
@@ -175,7 +175,7 @@
  * encoding used during these marshal operations.  Client applications are
  * expected to supply a valid character encoding name as defined in the
  * <a href="http://www.w3.org/TR/2000/REC-xml-20001006#charencoding">W3C XML 1.0
- * Recommendation</a> and supported by your Java Platform</a>.
+ * Recommendation</a> and supported by your Java Platform.
  * </blockquote>
  *
  * <p>
@@ -664,7 +664,7 @@
      *
      * <p>
      * Every marshaller internally maintains a
-     * {@link java.util.Map}&lt;{@link Class},{@link XmlAdapter}>,
+     * {@link java.util.Map}&lt;{@link Class},{@link XmlAdapter}&gt;,
      * which it uses for marshalling classes whose fields/methods are annotated
      * with {@link javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter}.
      *
@@ -750,17 +750,17 @@
     public Schema getSchema();
 
     /**
-     * <p/>
+     * <p>
      * Register an instance of an implementation of this class with a {@link Marshaller} to externally listen
      * for marshal events.
-     * <p/>
-     * <p/>
+     * </p>
+     * <p>
      * This class enables pre and post processing of each marshalled object.
      * The event callbacks are called when marshalling from an instance that maps to an xml element or
      * complex type definition. The event callbacks are not called when marshalling from an instance of a
      * Java datatype that represents a simple type definition.
-     * <p/>
-     * <p/>
+     * </p>
+     * <p>
      * External listener is one of two different mechanisms for defining marshal event callbacks.
      * See <a href="Marshaller.html#marshalEventCallback">Marshal Event Callbacks</a> for an overview.
      *
@@ -770,10 +770,10 @@
      */
     public static abstract class Listener {
         /**
-         * <p/>
+         * <p>
          * Callback method invoked before marshalling from <tt>source</tt> to XML.
-         * <p/>
-         * <p/>
+         * </p>
+         * <p>
          * This method is invoked just before marshalling process starts to marshal <tt>source</tt>.
          * Note that if the class of <tt>source</tt> defines its own <tt>beforeMarshal</tt> method,
          * the class specific callback method is invoked just before this method is invoked.
@@ -784,10 +784,10 @@
         }
 
         /**
-         * <p/>
+         * <p>
          * Callback method invoked after marshalling <tt>source</tt> to XML.
-         * <p/>
-         * <p/>
+         * </p>
+         * <p>
          * This method is invoked after <tt>source</tt> and all its descendants have been marshalled.
          * Note that if the class of <tt>source</tt> defines its own <tt>afterMarshal</tt> method,
          * the class specific callback method is invoked just before this method is invoked.
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/SchemaOutputResolver.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/SchemaOutputResolver.java	Wed Feb 18 19:27:49 2015 -0800
@@ -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
@@ -70,11 +70,11 @@
      *
      *      If the {@link Result} object has a system ID, it must be an
      *      absolute system ID. Those system IDs are relativized by the caller and used
-     *      for &lt;xs:import> statements.
+     *      for &lt;xs:import&gt; statements.
      *
      *      If the {@link Result} object does not have a system ID, a schema
      *      for the namespace URI is generated but it won't be explicitly
-     *      &lt;xs:import>ed from other schemas.
+     *      &lt;xs:import&gt;ed from other schemas.
      *
      *      If {@code null} is returned, the schema generation for this
      *      namespace URI will be skipped.
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/TypeConstraintException.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/TypeConstraintException.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -57,8 +57,9 @@
      * Exception reference
      *
      */
-    private Throwable linkedException;
+    private volatile Throwable linkedException;
 
+    static final long serialVersionUID = -3059799699420143848L;
 
     /**
      * Construct a TypeConstraintException with the specified detail message.  The
@@ -141,7 +142,7 @@
      *                  indicates that the linked exception does not exist or
      *                  is unknown).
      */
-    public synchronized void setLinkedException( Throwable exception ) {
+    public void setLinkedException( Throwable exception ) {
         this.linkedException = exception;
     }
 
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/Unmarshaller.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/Unmarshaller.java	Wed Feb 18 19:27:49 2015 -0800
@@ -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
@@ -238,13 +238,12 @@
  * to a JAXB mapped class by {@link JAXBContext}, that the root
  * element's <tt>xsi:type</tt> attribute takes
  * precedence over the unmarshal methods <tt>declaredType</tt> parameter.
- * These methods always return a <tt>JAXBElement&lt;declaredType></tt>
+ * These methods always return a <tt>JAXBElement&lt;declaredType&gt;</tt>
  * instance. The table below shows how the properties of the returned JAXBElement
  * instance are set.
  *
  * <a name="unmarshalDeclaredTypeReturn"></a>
- * <p>
- *   <table border="2" rules="all" cellpadding="4">
+ *   <table summary="" border="2" rules="all" cellpadding="4">
  *   <thead>
  *     <tr>
  *       <th align="center" colspan="2">
@@ -284,19 +283,19 @@
  * <blockquote>
  *    <pre>
  *       Schema fragment for example
- *       &lt;xs:schema>
- *          &lt;xs:complexType name="FooType">...&lt;\xs:complexType>
- *          &lt;!-- global element declaration "PurchaseOrder" -->
- *          &lt;xs:element name="PurchaseOrder">
- *              &lt;xs:complexType>
- *                 &lt;xs:sequence>
- *                    &lt;!-- local element declaration "foo" -->
- *                    &lt;xs:element name="foo" type="FooType"/>
+ *       &lt;xs:schema&gt;
+ *          &lt;xs:complexType name="FooType"&gt;...&lt;\xs:complexType&gt;
+ *          &lt;!-- global element declaration "PurchaseOrder" --&gt;
+ *          &lt;xs:element name="PurchaseOrder"&gt;
+ *              &lt;xs:complexType&gt;
+ *                 &lt;xs:sequence&gt;
+ *                    &lt;!-- local element declaration "foo" --&gt;
+ *                    &lt;xs:element name="foo" type="FooType"/&gt;
  *                    ...
- *                 &lt;/xs:sequence>
- *              &lt;/xs:complexType>
- *          &lt;/xs:element>
- *       &lt;/xs:schema>
+ *                 &lt;/xs:sequence&gt;
+ *              &lt;/xs:complexType&gt;
+ *          &lt;/xs:element&gt;
+ *       &lt;/xs:schema&gt;
  *
  *       JAXBContext jc = JAXBContext.newInstance( "com.acme.foo" );
  *       Unmarshaller u = jc.createUnmarshaller();
@@ -309,7 +308,7 @@
  *                                  // local element declaration in schema.
  *
  *       // FooType is the JAXB mapping of the type of local element declaration foo.
- *       JAXBElement&lt;FooType> foo = u.unmarshal( fooSubtree, FooType.class);
+ *       JAXBElement&lt;FooType&gt; foo = u.unmarshal( fooSubtree, FooType.class);
  *    </pre>
  * </blockquote>
  *
@@ -390,7 +389,7 @@
  * The external listener callback mechanism enables the registration of a {@link Listener}
  * instance with an {@link Unmarshaller#setListener(Listener)}. The external listener receives all callback events,
  * allowing for more centralized processing than per class defined callback methods.  The external listener
- * receives events when unmarshalling proces is marshalling to a JAXB element or to JAXB mapped class.
+ * receives events when unmarshalling process is marshalling to a JAXB element or to JAXB mapped class.
  * <p>
  * The 'class defined' and external listener event callback methods are independent of each other,
  * both can be called for one event.  The invocation ordering when both listener callback methods exist is
@@ -1010,7 +1009,7 @@
      *
      * <p>
      * Every unmarshaller internally maintains a
-     * {@link java.util.Map}&lt;{@link Class},{@link XmlAdapter}>,
+     * {@link java.util.Map}&lt;{@link Class},{@link XmlAdapter}&gt;,
      * which it uses for unmarshalling classes whose fields/methods are annotated
      * with {@link javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter}.
      *
@@ -1050,7 +1049,6 @@
     /**
      * <p>Associate a context that resolves cid's, content-id URIs, to
      * binary data passed as attachments.</p>
-     * <p/>
      * <p>Unmarshal time validation, enabled via {@link #setSchema(Schema)},
      * must be supported even when unmarshaller is performing XOP processing.
      * </p>
@@ -1063,21 +1061,21 @@
     AttachmentUnmarshaller getAttachmentUnmarshaller();
 
     /**
-     * <p/>
+     * <p>
      * Register an instance of an implementation of this class with {@link Unmarshaller} to externally listen
      * for unmarshal events.
-     * <p/>
-     * <p/>
+     * </p>
+     * <p>
      * This class enables pre and post processing of an instance of a JAXB mapped class
      * as XML data is unmarshalled into it. The event callbacks are called when unmarshalling
      * XML content into a JAXBElement instance or a JAXB mapped class that represents a complex type definition.
      * The event callbacks are not called when unmarshalling to an instance of a
      * Java datatype that represents a simple type definition.
-     * <p/>
-     * <p/>
+     * </p>
+     * <p>
      * External listener is one of two different mechanisms for defining unmarshal event callbacks.
      * See <a href="Unmarshaller.html#unmarshalEventCallback">Unmarshal Event Callbacks</a> for an overview.
-     * <p/>
+     * </p>
      * (@link #setListener(Listener)}
      * (@link #getListener()}
      *
@@ -1085,10 +1083,10 @@
      */
     public static abstract class Listener {
         /**
-         * <p/>
+         * <p>
          * Callback method invoked before unmarshalling into <tt>target</tt>.
-         * <p/>
-         * <p/>
+         * </p>
+         * <p>
          * This method is invoked immediately after <tt>target</tt> was created and
          * before the unmarshalling of this object begins. Note that
          * if the class of <tt>target</tt> defines its own <tt>beforeUnmarshal</tt> method,
@@ -1102,10 +1100,10 @@
         }
 
         /**
-         * <p/>
+         * <p>
          * Callback method invoked after unmarshalling XML data into <tt>target</tt>.
-         * <p/>
-         * <p/>
+         * </p>
+         * <p>
          * This method is invoked after all the properties (except IDREF) are unmarshalled into <tt>target</tt>,
          * but before <tt>target</tt> is set into its <tt>parent</tt> object.
          * Note that if the class of <tt>target</tt> defines its own <tt>afterUnmarshal</tt> method,
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlAnyAttribute.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlAnyAttribute.java	Wed Feb 18 19:27:49 2015 -0800
@@ -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
@@ -62,7 +62,7 @@
  * each attribute that is not statically associated with another
  * JavaBean property, via {@link XmlAttribute}, is entered into the
  * wildcard attribute map represented by
- * {@link Map}&lt;{@link QName},{@link Object}>. The attribute QName is the
+ * {@link Map}&lt;{@link QName},{@link Object}&gt;. The attribute QName is the
  * map's key. The key's value is the String value of the attribute.
  *
  * @author Kohsuke Kawaguchi, Sun Microsystems, Inc.
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlAnyElement.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlAnyElement.java	Wed Feb 18 19:27:49 2015 -0800
@@ -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
@@ -50,7 +50,6 @@
  * annotation for the other JavaBean properties on the class, is added to this
  * "catch-all" property.
  *
- * <p>
  * <h2>Usages:</h2>
  * <pre>
  * &#64;XmlAnyElement
@@ -61,7 +60,7 @@
  * public {@link Object}[] others;
  *
  * &#64;XmlAnyElement
- * private List&lt;{@link Element}> nodes;
+ * private List&lt;{@link Element}&gt; nodes;
  *
  * &#64;XmlAnyElement
  * private {@link Element} node;
@@ -88,7 +87,7 @@
  * <pre>
  * // List of java.lang.String or DOM nodes.
  * &#64;XmlAnyElement &#64;XmlMixed
- * List&lt;Object> others;
+ * List&lt;Object&gt; others;
  * </pre>
  *
  *
@@ -96,13 +95,13 @@
  *
  * The following schema would produce the following Java class:
  * <pre>
- * &lt;xs:complexType name="foo">
- *   &lt;xs:sequence>
- *     &lt;xs:element name="a" type="xs:int" />
- *     &lt;xs:element name="b" type="xs:int" />
- *     &lt;xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
- *   &lt;/xs:sequence>
- * &lt;/xs:complexType>
+ * &lt;xs:complexType name="foo"&gt;
+ *   &lt;xs:sequence&gt;
+ *     &lt;xs:element name="a" type="xs:int" /&gt;
+ *     &lt;xs:element name="b" type="xs:int" /&gt;
+ *     &lt;xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /&gt;
+ *   &lt;/xs:sequence&gt;
+ * &lt;/xs:complexType&gt;
  * </pre>
  *
  * <pre>
@@ -110,35 +109,35 @@
  *   int a;
  *   int b;
  *   &#64;{@link XmlAnyElement}
- *   List&lt;Element> any;
+ *   List&lt;Element&gt; any;
  * }
  * </pre>
  *
  * It can unmarshal instances like
  *
  * <pre>
- * &lt;foo xmlns:e="extra">
- *   &lt;a>1</a>
- *   &lt;e:other />  // this will be bound to DOM, because unmarshalling is orderless
- *   &lt;b>3</b>
- *   &lt;e:other />
- *   &lt;c>5</c>     // this will be bound to DOM, because the annotation doesn't remember namespaces.
- * &lt;/foo>
+ * &lt;foo xmlns:e="extra"&gt;
+ *   &lt;a&gt;1&lt;/a&gt;
+ *   &lt;e:other /&gt;  // this will be bound to DOM, because unmarshalling is orderless
+ *   &lt;b&gt;3&lt;/b&gt;
+ *   &lt;e:other /&gt;
+ *   &lt;c&gt;5&lt;/c&gt;     // this will be bound to DOM, because the annotation doesn't remember namespaces.
+ * &lt;/foo&gt;
  * </pre>
  *
  *
  *
  * The following schema would produce the following Java class:
  * <pre>
- * &lt;xs:complexType name="bar">
- *   &lt;xs:complexContent>
- *   &lt;xs:extension base="foo">
- *     &lt;xs:sequence>
- *       &lt;xs:element name="c" type="xs:int" />
- *       &lt;xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
- *     &lt;/xs:sequence>
- *   &lt;/xs:extension>
- * &lt;/xs:complexType>
+ * &lt;xs:complexType name="bar"&gt;
+ *   &lt;xs:complexContent&gt;
+ *   &lt;xs:extension base="foo"&gt;
+ *     &lt;xs:sequence&gt;
+ *       &lt;xs:element name="c" type="xs:int" /&gt;
+ *       &lt;xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" /&gt;
+ *     &lt;/xs:sequence&gt;
+ *   &lt;/xs:extension&gt;
+ * &lt;/xs:complexType&gt;
  * </pre>
  *
  * <pre>
@@ -152,14 +151,14 @@
  * It can unmarshal instances like
  *
  * <pre>
- * &lt;bar xmlns:e="extra">
- *   &lt;a>1</a>
- *   &lt;e:other />  // this will be bound to DOM, because unmarshalling is orderless
- *   &lt;b>3</b>
- *   &lt;e:other />
- *   &lt;c>5</c>     // this now goes to Bar.c
- *   &lt;e:other />  // this will go to Foo.any
- * &lt;/bar>
+ * &lt;bar xmlns:e="extra"&gt;
+ *   &lt;a&gt;1&lt;/a&gt;
+ *   &lt;e:other /&gt;  // this will be bound to DOM, because unmarshalling is orderless
+ *   &lt;b&gt;3&lt;/b&gt;
+ *   &lt;e:other /&gt;
+ *   &lt;c&gt;5&lt;/c&gt;     // this now goes to Bar.c
+ *   &lt;e:other /&gt;  // this will go to Foo.any
+ * &lt;/bar&gt;
  * </pre>
  *
  *
@@ -173,13 +172,13 @@
  * <p>
  * The following schema would produce the following Java class:
  * <pre>
- * &lt;xs:complexType name="foo">
- *   &lt;xs:choice maxOccurs="unbounded" minOccurs="0">
- *     &lt;xs:element name="a" type="xs:int" />
- *     &lt;xs:element name="b" type="xs:int" />
- *     &lt;xs:any namespace="##other" processContents="lax" />
- *   &lt;/xs:choice>
- * &lt;/xs:complexType>
+ * &lt;xs:complexType name="foo"&gt;
+ *   &lt;xs:choice maxOccurs="unbounded" minOccurs="0"&gt;
+ *     &lt;xs:element name="a" type="xs:int" /&gt;
+ *     &lt;xs:element name="b" type="xs:int" /&gt;
+ *     &lt;xs:any namespace="##other" processContents="lax" /&gt;
+ *   &lt;/xs:choice&gt;
+ * &lt;/xs:complexType&gt;
  * </pre>
  *
  * <pre>
@@ -189,27 +188,27 @@
  *     &#64;{@link XmlElementRef}(name="a", type="JAXBElement.class")
  *     &#64;{@link XmlElementRef}(name="b", type="JAXBElement.class")
  *   })
- *   {@link List}&lt;{@link Object}> others;
+ *   {@link List}&lt;{@link Object}&gt; others;
  * }
  *
  * &#64;XmlRegistry
  * class ObjectFactory {
  *   ...
  *   &#64;XmlElementDecl(name = "a", namespace = "", scope = Foo.class)
- *   {@link JAXBElement}&lt;Integer> createFooA( Integer i ) { ... }
+ *   {@link JAXBElement}&lt;Integer&gt; createFooA( Integer i ) { ... }
  *
  *   &#64;XmlElementDecl(name = "b", namespace = "", scope = Foo.class)
- *   {@link JAXBElement}&lt;Integer> createFooB( Integer i ) { ... }
+ *   {@link JAXBElement}&lt;Integer&gt; createFooB( Integer i ) { ... }
  * </pre>
  *
  * It can unmarshal instances like
  *
  * <pre>
- * &lt;foo xmlns:e="extra">
- *   &lt;a>1</a>     // this will unmarshal to a {@link JAXBElement} instance whose value is 1.
- *   &lt;e:other />  // this will unmarshal to a DOM {@link Element}.
- *   &lt;b>3</b>     // this will unmarshal to a {@link JAXBElement} instance whose value is 1.
- * &lt;/foo>
+ * &lt;foo xmlns:e="extra"&gt;
+ *   &lt;a&gt;1&lt;/a&gt;     // this will unmarshal to a {@link JAXBElement} instance whose value is 1.
+ *   &lt;e:other /&gt;  // this will unmarshal to a DOM {@link Element}.
+ *   &lt;b&gt;3&lt;/b&gt;     // this will unmarshal to a {@link JAXBElement} instance whose value is 1.
+ * &lt;/foo&gt;
  * </pre>
  *
  *
@@ -227,10 +226,10 @@
  * </pre>
  * then the following document will unmarshal like this:
  * <pre>
- * &lt;foo>
- *   &lt;unknown />
- *   &lt;foo />
- * &lt;/foo>
+ * &lt;foo&gt;
+ *   &lt;unknown /&gt;
+ *   &lt;foo /&gt;
+ * &lt;/foo&gt;
  *
  * Foo foo = unmarshal();
  * // 1 for 'unknown', another for 'foo'
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlAttachmentRef.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlAttachmentRef.java	Wed Feb 18 19:27:49 2015 -0800
@@ -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
@@ -52,14 +52,14 @@
  * </pre>
  * The above code maps to the following XML:
  * <pre>
- * &lt;xs:element name="foo" xmlns:ref="http://ws-i.org/profiles/basic/1.1/xsd">
- *   &lt;xs:complexType>
- *     &lt;xs:sequence>
- *       &lt;xs:element name="body" type="ref:swaRef" minOccurs="0" />
- *     &lt;/xs:sequence>
- *     &lt;xs:attribute name="data" type="ref:swaRef" use="optional" />
- *   &lt;/xs:complexType>
- * &lt;/xs:element>
+ * &lt;xs:element name="foo" xmlns:ref="http://ws-i.org/profiles/basic/1.1/xsd"&gt;
+ *   &lt;xs:complexType&gt;
+ *     &lt;xs:sequence&gt;
+ *       &lt;xs:element name="body" type="ref:swaRef" minOccurs="0" /&gt;
+ *     &lt;/xs:sequence&gt;
+ *     &lt;xs:attribute name="data" type="ref:swaRef" use="optional" /&gt;
+ *   &lt;/xs:complexType&gt;
+ * &lt;/xs:element&gt;
  * </pre>
  *
  * <p>
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlAttribute.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlAttribute.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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,8 +56,8 @@
  *        simple type.
  * <pre>
  *     // Examples
- *     &#64;XmlAttribute List&lt;Integer> items; //legal
- *     &#64;XmlAttribute List&lt;Bar> foo; // illegal if Bar does not map to a schema simple type
+ *     &#64;XmlAttribute List&lt;Integer&gt; items; //legal
+ *     &#64;XmlAttribute List&lt;Bar&gt; foo; // illegal if Bar does not map to a schema simple type
  * </pre>
  *   </li>
  *   <li> If the type of the field or the property is a non
@@ -80,7 +80,6 @@
  *            {@link XmlInlineBinaryData},
  *            {@link javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter}.</li>
  * </ul>
- * </p>
  *
  * <p> <b>Example 1: </b>Map a JavaBean property to an XML attribute.</p>
  * <pre>
@@ -91,12 +90,12 @@
  *         public void setPrice(java.math.BigDecimal ) {...};
  *     }
  *
- *     &lt;!-- Example: XML Schema fragment -->
- *     &lt;xs:complexType name="USPrice">
- *       &lt;xs:sequence>
- *       &lt;/xs:sequence>
- *       &lt;xs:attribute name="price" type="xs:decimal"/>
- *     &lt;/xs:complexType>
+ *     &lt;!-- Example: XML Schema fragment --&gt;
+ *     &lt;xs:complexType name="USPrice"&gt;
+ *       &lt;xs:sequence&gt;
+ *       &lt;/xs:sequence&gt;
+ *       &lt;xs:attribute name="price" type="xs:decimal"/&gt;
+ *     &lt;/xs:complexType&gt;
  * </pre>
  *
  * <p> <b>Example 2: </b>Map a JavaBean property to an XML attribute with anonymous type.</p>
@@ -107,17 +106,17 @@
  *     // Example: Code fragment
  *     class Foo {
  *         ...
- *         &#64;XmlAttribute List&lt;Integer> items;
+ *         &#64;XmlAttribute List&lt;Integer&gt; items;
  *     }
  *
- *     &lt;!-- Example: XML Schema fragment -->
- *     &lt;xs:complexType name="foo">
+ *     &lt;!-- Example: XML Schema fragment --&gt;
+ *     &lt;xs:complexType name="foo"&gt;
  *       ...
- *       &lt;xs:attribute name="items">
- *         &lt;xs:simpleType>
- *           &lt;xs:list itemType="xs:int"/>
- *         &lt;/xs:simpleType>
- *     &lt;/xs:complexType>
+ *       &lt;xs:attribute name="items"&gt;
+ *         &lt;xs:simpleType&gt;
+ *           &lt;xs:list itemType="xs:int"/&gt;
+ *         &lt;/xs:simpleType&gt;
+ *     &lt;/xs:complexType&gt;
  *
  * </pre>
  * @author Sekhar Vajjhala, Sun Microsystems, Inc.
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlElement.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlElement.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -83,12 +83,12 @@
  *         public java.math.BigDecimal price;
  *     }
  *
- *     &lt;!-- Example: Local XML Schema element -->
- *     &lt;xs:complexType name="USPrice"/>
- *       &lt;xs:sequence>
- *         &lt;xs:element name="itemprice" type="xs:decimal" minOccurs="0"/>
- *       &lt;/sequence>
- *     &lt;/xs:complexType>
+ *     &lt;!-- Example: Local XML Schema element --&gt;
+ *     &lt;xs:complexType name="USPrice"/&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="itemprice" type="xs:decimal" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/xs:complexType&gt;
  *   </pre>
  * <p>
  *
@@ -101,12 +101,12 @@
  *         public java.math.BigDecimal price;
  *     }
  *
- *     &lt;!-- Example: Local XML Schema element -->
- *     &lt;xs:complexType name="USPrice">
- *       &lt;xs:sequence>
- *         &lt;xs:element name="price" type="xs:decimal" nillable="true" minOccurs="0"/>
- *       &lt;/sequence>
- *     &lt;/xs:complexType>
+ *     &lt;!-- Example: Local XML Schema element --&gt;
+ *     &lt;xs:complexType name="USPrice"&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="price" type="xs:decimal" nillable="true" minOccurs="0"/&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/xs:complexType&gt;
  *   </pre>
  * <p>
  * <b> Example 3: </b> Map a field to a nillable, required element.
@@ -118,14 +118,13 @@
  *         public java.math.BigDecimal price;
  *     }
  *
- *     &lt;!-- Example: Local XML Schema element -->
- *     &lt;xs:complexType name="USPrice">
- *       &lt;xs:sequence>
- *         &lt;xs:element name="price" type="xs:decimal" nillable="true" minOccurs="1"/>
- *       &lt;/sequence>
- *     &lt;/xs:complexType>
+ *     &lt;!-- Example: Local XML Schema element --&gt;
+ *     &lt;xs:complexType name="USPrice"&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="price" type="xs:decimal" nillable="true" minOccurs="1"/&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/xs:complexType&gt;
  *   </pre>
- * <p>
  *
  * <p> <b>Example 4: </b>Map a JavaBean property to an XML element
  * with anonymous type.</p>
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlElementDecl.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlElementDecl.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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,23 +62,23 @@
  *     &#64;XmlRegistry
  *     class ObjectFactory {
  *         &#64;XmlElementDecl(name="foo")
- *         JAXBElement&lt;String> createFoo(String s) { ... }
+ *         JAXBElement&lt;String&gt; createFoo(String s) { ... }
  *     }
  * </pre>
  * <pre>
- *     &lt;!-- XML input -->
- *       &lt;foo>string</foo>
+ *     &lt;!-- XML input --&gt;
+ *       &lt;foo&gt;string&lt;/foo&gt;
  *
  *     // Example: code fragment corresponding to XML input
- *     JAXBElement<String> o =
- *     (JAXBElement<String>)unmarshaller.unmarshal(aboveDocument);
+ *     JAXBElement&lt;String&gt; o =
+ *     (JAXBElement&lt;String&gt;)unmarshaller.unmarshal(aboveDocument);
  *     // print JAXBElement instance to show values
  *     System.out.println(o.getName());   // prints  "{}foo"
  *     System.out.println(o.getValue());  // prints  "string"
  *     System.out.println(o.getValue().getClass()); // prints "java.lang.String"
  *
- *     &lt;!-- Example: XML schema definition -->
- *     &lt;xs:element name="foo" type="xs:string"/>
+ *     &lt;!-- Example: XML schema definition --&gt;
+ *     &lt;xs:element name="foo" type="xs:string"/&gt;
  * </pre>
  *
  * <p><b>Example 2: </b> Element declaration with non local scope
@@ -91,16 +91,16 @@
  * this javadoc.
  *
  * <pre>
- *     &lt;!-- Example: XML schema definition -->
- *     &lt;xs:schema>
- *       &lt;xs:complexType name="pea">
- *         &lt;xs:choice maxOccurs="unbounded">
- *           &lt;xs:element name="foo" type="xs:string"/>
- *           &lt;xs:element name="bar" type="xs:string"/>
- *         &lt;/xs:choice>
- *       &lt;/xs:complexType>
- *       &lt;xs:element name="foo" type="xs:int"/>
- *     &lt;/xs:schema>
+ *     &lt;!-- Example: XML schema definition --&gt;
+ *     &lt;xs:schema&gt;
+ *       &lt;xs:complexType name="pea"&gt;
+ *         &lt;xs:choice maxOccurs="unbounded"&gt;
+ *           &lt;xs:element name="foo" type="xs:string"/&gt;
+ *           &lt;xs:element name="bar" type="xs:string"/&gt;
+ *         &lt;/xs:choice&gt;
+ *       &lt;/xs:complexType&gt;
+ *       &lt;xs:element name="foo" type="xs:int"/&gt;
+ *     &lt;/xs:schema&gt;
  * </pre>
  * <pre>
  *     // Example: expected default binding
@@ -109,19 +109,19 @@
  *             &#64;XmlElementRef(name="foo",type=JAXBElement.class)
  *             &#64;XmlElementRef(name="bar",type=JAXBElement.class)
  *         })
- *         List&lt;JAXBElement&lt;String>> fooOrBar;
+ *         List&lt;JAXBElement&lt;String&gt;&gt; fooOrBar;
  *     }
  *
  *     &#64;XmlRegistry
  *     class ObjectFactory {
  *         &#64;XmlElementDecl(scope=Pea.class,name="foo")
- *         JAXBElement<String> createPeaFoo(String s);
+ *         JAXBElement&lt;String&gt; createPeaFoo(String s);
  *
  *         &#64;XmlElementDecl(scope=Pea.class,name="bar")
- *         JAXBElement<String> createPeaBar(String s);
+ *         JAXBElement&lt;String&gt; createPeaBar(String s);
  *
  *         &#64;XmlElementDecl(name="foo")
- *         JAXBElement<Integer> createFoo(Integer i);
+ *         JAXBElement&lt;Integer&gt; createFoo(Integer i);
  *     }
  *
  * </pre>
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlElementRef.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlElementRef.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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,8 +57,8 @@
  * (section 5.5.5, "Element Property" of JAXB 2.0 specification). An
  * element property method signature is of the form:
  * <pre>
- *     public void setTerm(JAXBElement<? extends Operator>);
- *     public JAXBElement<? extends Operator> getTerm();
+ *     public void setTerm(JAXBElement&lt;? extends Operator&gt;);
+ *     public JAXBElement&lt;? extends Operator&gt; getTerm();
  * </pre>
  * <p>
  * An element factory method annotated with  {@link XmlElementDecl} is
@@ -106,7 +106,7 @@
  *         // element name will be derived from the &#64;XmlRootElement
  *         // annotation on the type (for e.g. "jar" for JarTask).
  *         &#64;XmlElementRef
- *         List&lt;Task> tasks;
+ *         List&lt;Task&gt; tasks;
  *     }
  *
  *     abstract class Task {
@@ -122,16 +122,16 @@
  *         ...
  *     }
  *
- *     &lt;!-- XML Schema fragment -->
- *     &lt;xs:element name="target" type="Target">
- *     &lt;xs:complexType name="Target">
- *       &lt;xs:sequence>
- *         &lt;xs:choice maxOccurs="unbounded">
- *           &lt;xs:element ref="jar">
- *           &lt;xs:element ref="javac">
- *         &lt;/xs:choice>
- *       &lt;/xs:sequence>
- *     &lt;/xs:complexType>
+ *     &lt;!-- XML Schema fragment --&gt;
+ *     &lt;xs:element name="target" type="Target"&gt;
+ *     &lt;xs:complexType name="Target"&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:choice maxOccurs="unbounded"&gt;
+ *           &lt;xs:element ref="jar"&gt;
+ *           &lt;xs:element ref="javac"&gt;
+ *         &lt;/xs:choice&gt;
+ *       &lt;/xs:sequence&gt;
+ *     &lt;/xs:complexType&gt;
  *
  * </pre>
  * <p>
@@ -144,14 +144,14 @@
  * </pre>
  * will produce the following XML output:
  * <pre>
- *     &lt;target>
- *       &lt;jar>
+ *     &lt;target&gt;
+ *       &lt;jar&gt;
  *         ....
- *       &lt;/jar>
- *       &lt;javac>
+ *       &lt;/jar&gt;
+ *       &lt;javac&gt;
  *         ....
- *       &lt;/javac>
- *     &lt;/target>
+ *       &lt;/javac&gt;
+ *     &lt;/target&gt;
  * </pre>
  * <p>
  * It is not an error to have a class that extends <tt>Task</tt>
@@ -182,17 +182,17 @@
  *         //  substituted in the XML document.
  *         //
  *         &#64;XmlElementRef(type=JAXBElement.class,name="operator")
- *         JAXBElement&lt;? extends Operator> term;
+ *         JAXBElement&lt;? extends Operator&gt; term;
  *     }
  *
  *     &#64;XmlRegistry
  *     class ObjectFactory {
  *         &#64;XmlElementDecl(name="operator")
- *         JAXBElement&lt;Operator> createOperator(Operator o) {...}
+ *         JAXBElement&lt;Operator&gt; createOperator(Operator o) {...}
  *         &#64;XmlElementDecl(name="add",substitutionHeadName="operator")
- *         JAXBElement&lt;Operator> createAdd(Operator o) {...}
+ *         JAXBElement&lt;Operator&gt; createAdd(Operator o) {...}
  *         &#64;XmlElementDecl(name="sub",substitutionHeadName="operator")
- *         JAXBElement&lt;Operator> createSub(Operator o) {...}
+ *         JAXBElement&lt;Operator&gt; createSub(Operator o) {...}
  *     }
  *
  *     class Operator {
@@ -208,9 +208,9 @@
  * </pre>
  * will produce the following XML output:
  * <pre>
- *     &lt;math>
- *       &lt;add>...&lt;/add>
- *     &lt;/math>
+ *     &lt;math&gt;
+ *       &lt;add&gt;...&lt;/add&gt;
+ *     &lt;/math&gt;
  * </pre>
  *
  *
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlElementWrapper.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlElementWrapper.java	Wed Feb 18 19:27:49 2015 -0800
@@ -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
@@ -44,15 +44,15 @@
  *      int[] names;
  *
  *    // XML Serialization Form 1 (Unwrapped collection)
- *    &lt;names> ... &lt;/names>
- *    &lt;names> ... &lt;/names>
+ *    &lt;names&gt; ... &lt;/names&gt;
+ *    &lt;names&gt; ... &lt;/names&gt;
  *
  *    // XML Serialization Form 2 ( Wrapped collection )
- *    &lt;wrapperElement>
- *       &lt;names> value-of-item &lt;/names>
- *       &lt;names> value-of-item &lt;/names>
+ *    &lt;wrapperElement&gt;
+ *       &lt;names&gt; value-of-item &lt;/names&gt;
+ *       &lt;names&gt; value-of-item &lt;/names&gt;
  *       ....
- *    &lt;/wrapperElement>
+ *    &lt;/wrapperElement&gt;
  * </pre>
  *
  * <p> The two serialized XML forms allow a null collection to be
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlElements.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlElements.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -83,21 +83,21 @@
  *    }
  *
  *    &lt;!-- XML Representation for a List of {1,2.5}
- *            XML output is not wrapped using another element -->
+ *            XML output is not wrapped using another element --&gt;
  *    ...
- *    &lt;A> 1 &lt;/A>
- *    &lt;B> 2.5 &lt;/B>
+ *    &lt;A&gt; 1 &lt;/A&gt;
+ *    &lt;B&gt; 2.5 &lt;/B&gt;
  *    ...
  *
- *    &lt;!-- XML Schema fragment -->
- *    &lt;xs:complexType name="Foo">
- *      &lt;xs:sequence>
- *        &lt;xs:choice minOccurs="0" maxOccurs="unbounded">
- *          &lt;xs:element name="A" type="xs:int"/>
- *          &lt;xs:element name="B" type="xs:float"/>
- *        &lt;xs:choice>
- *      &lt;/xs:sequence>
- *    &lt;/xs:complexType>
+ *    &lt;!-- XML Schema fragment --&gt;
+ *    &lt;xs:complexType name="Foo"&gt;
+ *      &lt;xs:sequence&gt;
+ *        &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
+ *          &lt;xs:element name="A" type="xs:int"/&gt;
+ *          &lt;xs:element name="B" type="xs:float"/&gt;
+ *        &lt;xs:choice&gt;
+ *      &lt;/xs:sequence&gt;
+ *    &lt;/xs:complexType&gt;
  *
  * </pre>
  *
@@ -115,19 +115,19 @@
  *        public List items;
  *    }
  *
- *    &lt;!-- XML Schema fragment -->
- *    &lt;xs:complexType name="Foo">
- *      &lt;xs:sequence>
- *        &lt;xs:element name="bar">
- *          &lt;xs:complexType>
- *            &lt;xs:choice minOccurs="0" maxOccurs="unbounded">
- *              &lt;xs:element name="A" type="xs:int"/>
- *              &lt;xs:element name="B" type="xs:float"/>
- *            &lt;/xs:choice>
- *          &lt;/xs:complexType>
- *        &lt;/xs:element>
- *      &lt;/xs:sequence>
- *    &lt;/xs:complexType>
+ *    &lt;!-- XML Schema fragment --&gt;
+ *    &lt;xs:complexType name="Foo"&gt;
+ *      &lt;xs:sequence&gt;
+ *        &lt;xs:element name="bar"&gt;
+ *          &lt;xs:complexType&gt;
+ *            &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
+ *              &lt;xs:element name="A" type="xs:int"/&gt;
+ *              &lt;xs:element name="B" type="xs:float"/&gt;
+ *            &lt;/xs:choice&gt;
+ *          &lt;/xs:complexType&gt;
+ *        &lt;/xs:element&gt;
+ *      &lt;/xs:sequence&gt;
+ *    &lt;/xs:complexType&gt;
  * </pre>
  *
  * <p><b>Example 3:</b> Change element name based on type using an adapter.
@@ -146,19 +146,19 @@
  *    &#64;XmlType(name="PX") class PX extends P {...}
  *    &#64;XmlType(name="PY") class PY extends P {...}
  *
- *    &lt;!-- XML Schema fragment -->
- *    &lt;xs:complexType name="Foo">
- *      &lt;xs:sequence>
- *        &lt;xs:element name="bar">
- *          &lt;xs:complexType>
- *            &lt;xs:choice minOccurs="0" maxOccurs="unbounded">
- *              &lt;xs:element name="A" type="PX"/>
- *              &lt;xs:element name="B" type="PY"/>
- *            &lt;/xs:choice>
- *          &lt;/xs:complexType>
- *        &lt;/xs:element>
- *      &lt;/xs:sequence>
- *    &lt;/xs:complexType>
+ *    &lt;!-- XML Schema fragment --&gt;
+ *    &lt;xs:complexType name="Foo"&gt;
+ *      &lt;xs:sequence&gt;
+ *        &lt;xs:element name="bar"&gt;
+ *          &lt;xs:complexType&gt;
+ *            &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
+ *              &lt;xs:element name="A" type="PX"/&gt;
+ *              &lt;xs:element name="B" type="PY"/&gt;
+ *            &lt;/xs:choice&gt;
+ *          &lt;/xs:complexType&gt;
+ *        &lt;/xs:element&gt;
+ *      &lt;/xs:sequence&gt;
+ *    &lt;/xs:complexType&gt;
  * </pre>
  *
  * @author <ul><li>Kohsuke Kawaguchi, Sun Microsystems, Inc.</li><li>Sekhar Vajjhala, Sun Microsystems, Inc.</li></ul>
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlEnumValue.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlEnumValue.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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,23 +56,23 @@
  * <p> In the absence of this annotation, {@link Enum#name()} is used
  * as the XML representation.
  *
- * <p> <b>Example 1: </b>Map enum constant name -> enumeration facet</p>
+ * <p> <b>Example 1: </b>Map enum constant name -&gt; enumeration facet</p>
  * <pre>
  *     //Example: Code fragment
  *     &#64;XmlEnum(String.class)
  *     public enum Card { CLUBS, DIAMONDS, HEARTS, SPADES }
  *
- *     &lt;!-- Example: XML Schema fragment -->
- *     &lt;xs:simpleType name="Card">
- *       &lt;xs:restriction base="xs:string"/>
- *         &lt;xs:enumeration value="CLUBS"/>
- *         &lt;xs:enumeration value="DIAMONDS"/>
- *         &lt;xs:enumeration value="HEARTS"/>
- *         &lt;xs:enumeration value="SPADES"/>
- *     &lt;/xs:simpleType>
+ *     &lt;!-- Example: XML Schema fragment --&gt;
+ *     &lt;xs:simpleType name="Card"&gt;
+ *       &lt;xs:restriction base="xs:string"/&gt;
+ *         &lt;xs:enumeration value="CLUBS"/&gt;
+ *         &lt;xs:enumeration value="DIAMONDS"/&gt;
+ *         &lt;xs:enumeration value="HEARTS"/&gt;
+ *         &lt;xs:enumeration value="SPADES"/&gt;
+ *     &lt;/xs:simpleType&gt;
  * </pre>
  *
- * <p><b>Example 2: </b>Map enum constant name(value) -> enumeration facet </p>
+ * <p><b>Example 2: </b>Map enum constant name(value) -&gt; enumeration facet </p>
  * <pre>
  *     //Example: code fragment
  *     &#64;XmlType
@@ -83,18 +83,18 @@
  *         &#64;XmlEnumValue("10") DIME(10),
  *         &#64;XmlEnumValue("25") QUARTER(25) }
  *
- *     &lt;!-- Example: XML Schema fragment -->
- *     &lt;xs:simpleType name="Coin">
- *       &lt;xs:restriction base="xs:int">
- *         &lt;xs:enumeration value="1"/>
- *         &lt;xs:enumeration value="5"/>
- *         &lt;xs:enumeration value="10"/>
- *         &lt;xs:enumeration value="25"/>
- *       &lt;/xs:restriction>
- *     &lt;/xs:simpleType>
+ *     &lt;!-- Example: XML Schema fragment --&gt;
+ *     &lt;xs:simpleType name="Coin"&gt;
+ *       &lt;xs:restriction base="xs:int"&gt;
+ *         &lt;xs:enumeration value="1"/&gt;
+ *         &lt;xs:enumeration value="5"/&gt;
+ *         &lt;xs:enumeration value="10"/&gt;
+ *         &lt;xs:enumeration value="25"/&gt;
+ *       &lt;/xs:restriction&gt;
+ *     &lt;/xs:simpleType&gt;
  * </pre>
  *
- * <p><b>Example 3: </b>Map enum constant name -> enumeration facet </p>
+ * <p><b>Example 3: </b>Map enum constant name -&gt; enumeration facet </p>
  *
  * <pre>
  *     //Code fragment
@@ -105,13 +105,13 @@
  *         &#64;XmlEnumValue("2") TWO;
  *     }
  *
- *     &lt;!-- Example: XML Schema fragment -->
- *     &lt;xs:simpleType name="Code">
- *       &lt;xs:restriction base="xs:int">
- *         &lt;xs:enumeration value="1"/>
- *         &lt;xs:enumeration value="2"/>
- *       &lt;/xs:restriction>
- *     &lt;/xs:simpleType>
+ *     &lt;!-- Example: XML Schema fragment --&gt;
+ *     &lt;xs:simpleType name="Code"&gt;
+ *       &lt;xs:restriction base="xs:int"&gt;
+ *         &lt;xs:enumeration value="1"/&gt;
+ *         &lt;xs:enumeration value="2"/&gt;
+ *       &lt;/xs:restriction&gt;
+ *     &lt;/xs:simpleType&gt;
  * </pre>
  *
  * @since 1.6, JAXB 2.0
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlID.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlID.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -74,15 +74,15 @@
  *        .... other properties not shown
  *    }
  *
- *    &lt;!-- Example: XML Schema fragment -->
- *    &lt;xs:complexType name="Customer">
- *      &lt;xs:complexContent>
- *        &lt;xs:sequence>
+ *    &lt;!-- Example: XML Schema fragment --&gt;
+ *    &lt;xs:complexType name="Customer"&gt;
+ *      &lt;xs:complexContent&gt;
+ *        &lt;xs:sequence&gt;
  *          ....
- *        &lt;/xs:sequence>
- *        &lt;xs:attribute name="customerID" type="xs:ID"/>
- *      &lt;/xs:complexContent>
- *    &lt;/xs:complexType>
+ *        &lt;/xs:sequence&gt;
+ *        &lt;xs:attribute name="customerID" type="xs:ID"/&gt;
+ *      &lt;/xs:complexContent&gt;
+ *    &lt;/xs:complexType&gt;
  * </pre>
  *
  * @author Sekhar Vajjhala, Sun Microsystems, Inc.
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlIDREF.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlIDREF.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -83,15 +83,15 @@
  *       ....
  *    }
  *
- *   &lt;!-- Example: XML Schema fragment -->
- *   &lt;xs:complexType name="Shipping">
- *     &lt;xs:complexContent>
- *       &lt;xs:sequence>
- *         &lt;xs:element name="customer" type="xs:IDREF"/>
+ *   &lt;!-- Example: XML Schema fragment --&gt;
+ *   &lt;xs:complexType name="Shipping"&gt;
+ *     &lt;xs:complexContent&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="customer" type="xs:IDREF"/&gt;
  *         ....
- *       &lt;/xs:sequence>
- *     &lt;/xs:complexContent>
- *   &lt;/xs:complexType>
+ *       &lt;/xs:sequence&gt;
+ *     &lt;/xs:complexContent&gt;
+ *   &lt;/xs:complexType&gt;
  *
  * </pre>
  *
@@ -143,61 +143,61 @@
  *       public Invoice getInvoice();
  *   }
  *
- *   &lt;!-- XML Schema mapping for above code frament -->
+ *   &lt;!-- XML Schema mapping for above code frament --&gt;
  *
- *   &lt;xs:complexType name="Invoice">
- *     &lt;xs:complexContent>
- *       &lt;xs:sequence>
- *         &lt;xs:element name="customer" type="xs:IDREF"/>
+ *   &lt;xs:complexType name="Invoice"&gt;
+ *     &lt;xs:complexContent&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="customer" type="xs:IDREF"/&gt;
  *         ....
- *       &lt;/xs:sequence>
- *     &lt;/xs:complexContent>
- *   &lt;/xs:complexType>
+ *       &lt;/xs:sequence&gt;
+ *     &lt;/xs:complexContent&gt;
+ *   &lt;/xs:complexType&gt;
  *
- *   &lt;xs:complexType name="Shipping">
- *     &lt;xs:complexContent>
- *       &lt;xs:sequence>
- *         &lt;xs:element name="customer" type="xs:IDREF"/>
+ *   &lt;xs:complexType name="Shipping"&gt;
+ *     &lt;xs:complexContent&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="customer" type="xs:IDREF"/&gt;
  *         ....
- *       &lt;/xs:sequence>
- *     &lt;/xs:complexContent>
- *   &lt;/xs:complexType>
+ *       &lt;/xs:sequence&gt;
+ *     &lt;/xs:complexContent&gt;
+ *   &lt;/xs:complexType&gt;
  *
- *   &lt;xs:complexType name="Customer">
- *     &lt;xs:complexContent>
- *       &lt;xs:sequence>
+ *   &lt;xs:complexType name="Customer"&gt;
+ *     &lt;xs:complexContent&gt;
+ *       &lt;xs:sequence&gt;
  *         ....
- *       &lt;/xs:sequence>
- *       &lt;xs:attribute name="CustomerID" type="xs:ID"/>
- *     &lt;/xs:complexContent>
- *   &lt;/xs:complexType>
+ *       &lt;/xs:sequence&gt;
+ *       &lt;xs:attribute name="CustomerID" type="xs:ID"/&gt;
+ *     &lt;/xs:complexContent&gt;
+ *   &lt;/xs:complexType&gt;
  *
- *   &lt;xs:complexType name="CustomerData">
- *     &lt;xs:complexContent>
- *       &lt;xs:sequence>
- *         &lt;xs:element name="customer" type="xs:Customer"/>
- *         &lt;xs:element name="shipping" type="xs:Shipping"/>
- *         &lt;xs:element name="invoice"  type="xs:Invoice"/>
- *       &lt;/xs:sequence>
- *     &lt;/xs:complexContent>
- *   &lt;/xs:complexType>
+ *   &lt;xs:complexType name="CustomerData"&gt;
+ *     &lt;xs:complexContent&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="customer" type="xs:Customer"/&gt;
+ *         &lt;xs:element name="shipping" type="xs:Shipping"/&gt;
+ *         &lt;xs:element name="invoice"  type="xs:Invoice"/&gt;
+ *       &lt;/xs:sequence&gt;
+ *     &lt;/xs:complexContent&gt;
+ *   &lt;/xs:complexType&gt;
  *
- *   &lt;xs:element name"customerData" type="xs:CustomerData"/>
+ *   &lt;xs:element name"customerData" type="xs:CustomerData"/&gt;
  *
- *   &lt;!-- Instance document conforming to the above XML Schema -->
- *    &lt;customerData>
- *       &lt;customer customerID="Alice">
+ *   &lt;!-- Instance document conforming to the above XML Schema --&gt;
+ *    &lt;customerData&gt;
+ *       &lt;customer customerID="Alice"&gt;
  *           ....
- *       &lt;/customer>
+ *       &lt;/customer&gt;
  *
- *       &lt;shipping customer="Alice">
+ *       &lt;shipping customer="Alice"&gt;
  *           ....
- *       &lt;/shipping>
+ *       &lt;/shipping&gt;
  *
- *       &lt;invoice customer="Alice">
+ *       &lt;invoice customer="Alice"&gt;
  *           ....
- *       &lt;/invoice>
- *   &lt;/customerData>
+ *       &lt;/invoice&gt;
+ *   &lt;/customerData&gt;
  *
  * </pre>
  *
@@ -210,14 +210,14 @@
  *             public List customers;
  *     }
  *
- *     &lt;!-- XML schema fragment -->
- *     &lt;xs:complexType name="Shipping">
- *       &lt;xs:sequence>
- *         &lt;xs:choice minOccurs="0" maxOccurs="unbounded">
- *           &lt;xs:element name="Alice" type="xs:IDREF"/>
- *         &lt;/xs:choice>
- *       &lt;/xs:sequence>
- *     &lt;/xs:complexType>
+ *     &lt;!-- XML schema fragment --&gt;
+ *     &lt;xs:complexType name="Shipping"&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
+ *           &lt;xs:element name="Alice" type="xs:IDREF"/&gt;
+ *         &lt;/xs:choice&gt;
+ *       &lt;/xs:sequence&gt;
+ *     &lt;/xs:complexType&gt;
  * </pre>
  *
  * <p><b>Example 4: </b> Mapping a List to a list of elements of type IDREF.
@@ -231,15 +231,15 @@
  *         public List customers;
  *     }
  *
- *     &lt;!-- XML Schema fragment -->
- *     &lt;xs:complexType name="Shipping">
- *       &lt;xs:sequence>
- *         &lt;xs:choice minOccurs="0" maxOccurs="unbounded">
- *           &lt;xs:element name="Alice" type="xs:IDREF"/>
- *           &lt;xs:element name="John" type="xs:IDREF"/>
- *         &lt;/xs:choice>
- *       &lt;/xs:sequence>
- *     &lt;/xs:complexType>
+ *     &lt;!-- XML Schema fragment --&gt;
+ *     &lt;xs:complexType name="Shipping"&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:choice minOccurs="0" maxOccurs="unbounded"&gt;
+ *           &lt;xs:element name="Alice" type="xs:IDREF"/&gt;
+ *           &lt;xs:element name="John" type="xs:IDREF"/&gt;
+ *         &lt;/xs:choice&gt;
+ *       &lt;/xs:sequence&gt;
+ *     &lt;/xs:complexType&gt;
  * </pre>
  * @author Sekhar Vajjhala, Sun Microsystems, Inc.
  * @see XmlID
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlList.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlList.java	Wed Feb 18 19:27:49 2015 -0800
@@ -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
@@ -53,17 +53,17 @@
  * &#64;XmlRootElement
  * class Foo {
  *     &#64;XmlElement
- *     List&lt;String> data;
+ *     List&lt;String&gt; data;
  * }
  * </pre>
  *
  * would produce XML like this:
  *
  * <pre>
- * &lt;foo>
- *   &lt;data>abc</data>
- *   &lt;data>def</data>
- * &lt;/foo>
+ * &lt;foo&gt;
+ *   &lt;data&gt;abc&lt;/data&gt;
+ *   &lt;data&gt;def&lt;/data&gt;
+ * &lt;/foo&gt;
  * </pre>
  *
  * &#64;XmlList annotation, on the other hand, allows multiple values to be
@@ -74,16 +74,16 @@
  * class Foo {
  *     &#64;XmlElement
  *     &#64;XmlList
- *     List&lt;String> data;
+ *     List&lt;String&gt; data;
  * }
  * </pre>
  *
  * the above code will produce XML like this:
  *
  * <pre>
- * &lt;foo>
- *   &lt;data>abc def</data>
- * &lt;/foo>
+ * &lt;foo&gt;
+ *   &lt;data&gt;abc def&lt;/data&gt;
+ * &lt;/foo&gt;
  * </pre>
  *
  * <p>This annotation can be used with the following annotations:
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlMixed.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlMixed.java	Wed Feb 18 19:27:49 2015 -0800
@@ -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
@@ -57,16 +57,16 @@
  *
  * Below is an example of binding and creation of mixed content.
  * <pre>
- *  &lt;!-- schema fragment having  mixed content -->
- *  &lt;xs:complexType name="letterBody" mixed="true">
- *    &lt;xs:sequence>
- *      &lt;xs:element name="name" type="xs:string"/>
- *      &lt;xs:element name="quantity" type="xs:positiveInteger"/>
- *      &lt;xs:element name="productName" type="xs:string"/>
- *      &lt;!-- etc. -->
- *    &lt;/xs:sequence>
- *  &lt;/xs:complexType>
- *  &lt;xs:element name="letterBody" type="letterBody"/>
+ *  &lt;!-- schema fragment having  mixed content --&gt;
+ *  &lt;xs:complexType name="letterBody" mixed="true"&gt;
+ *    &lt;xs:sequence&gt;
+ *      &lt;xs:element name="name" type="xs:string"/&gt;
+ *      &lt;xs:element name="quantity" type="xs:positiveInteger"/&gt;
+ *      &lt;xs:element name="productName" type="xs:string"/&gt;
+ *      &lt;!-- etc. --&gt;
+ *    &lt;/xs:sequence&gt;
+ *  &lt;/xs:complexType&gt;
+ *  &lt;xs:element name="letterBody" type="letterBody"/&gt;
  *
  * // Schema-derived Java code:
  * // (Only annotations relevant to mixed content are shown below,
@@ -74,12 +74,12 @@
  * import java.math.BigInteger;
  * public class ObjectFactory {
  *      // element instance factories
- *      JAXBElement&lt;LetterBody> createLetterBody(LetterBody value);
- *      JAXBElement&lt;String>     createLetterBodyName(String value);
- *      JAXBElement&lt;BigInteger> createLetterBodyQuantity(BigInteger value);
- *      JAXBElement&lt;String>     createLetterBodyProductName(String value);
+ *      JAXBElement&lt;LetterBody&gt; createLetterBody(LetterBody value);
+ *      JAXBElement&lt;String&gt;     createLetterBodyName(String value);
+ *      JAXBElement&lt;BigInteger&gt; createLetterBodyQuantity(BigInteger value);
+ *      JAXBElement&lt;String&gt;     createLetterBodyProductName(String value);
  *      // type instance factory
- *      LetterBody> createLetterBody();
+ *      LetterBody createLetterBody();
  * }
  * </pre>
  * <pre>
@@ -97,16 +97,16 @@
  * </pre>
  * The following is an XML instance document with mixed content
  * <pre>
- * &lt;letterBody>
- * Dear Mr.&lt;name>Robert Smith&lt;/name>
- * Your order of &lt;quantity>1&lt;/quantity> &lt;productName>Baby
- * Monitor&lt;/productName> shipped from our warehouse. ....
- * &lt;/letterBody>
+ * &lt;letterBody&gt;
+ * Dear Mr.&lt;name&gt;Robert Smith&lt;/name&gt;
+ * Your order of &lt;quantity&gt;1&lt;/quantity&gt; &lt;productName&gt;Baby
+ * Monitor&lt;/productName&gt; shipped from our warehouse. ....
+ * &lt;/letterBody&gt;
  * </pre>
  * that can be constructed using following JAXB API calls.
  * <pre>
  * LetterBody lb = ObjectFactory.createLetterBody();
- * JAXBElement&lt;LetterBody> lbe = ObjectFactory.createLetterBody(lb);
+ * JAXBElement&lt;LetterBody&gt; lbe = ObjectFactory.createLetterBody(lb);
  * List gcl = lb.getContent();  //add mixed content to general content property.
  * gcl.add("Dear Mr.");  // add text information item as a String.
  *
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlNsForm.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlNsForm.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -36,8 +36,7 @@
  * The namespace qualification values are used in the annotations
  * defined in this packge. The enumeration values are mapped as follows:
  *
- * <p>
- * <table border="1" cellpadding="4" cellspacing="3">
+ * <table summary="" border="1" cellpadding="4" cellspacing="3">
  *   <tbody>
  *     <tr>
  *       <td><b>Enum Value</b></td>
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlRootElement.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlRootElement.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -54,7 +54,7 @@
  * <p> This annotation can be used with the following annotations:
  * {@link XmlType}, {@link XmlEnum}, {@link XmlAccessorType},
  * {@link XmlAccessorOrder}.
- * <p>
+ * </p>
 
  * <p>
  * <b>Example 1: </b> Associate an element with XML Schema type
@@ -74,11 +74,11 @@
  * </pre>
  *
  * <pre>
- *     &lt;!-- Example: XML output -->
- *     &lt;point>
- *       &lt;x> 3 </x>
- *       &lt;y> 5 </y>
- *     &lt;/point>
+ *     &lt;!-- Example: XML output --&gt;
+ *     &lt;point&gt;
+ *       &lt;x&gt; 3 &lt;/x&gt;
+ *       &lt;y&gt; 5 &lt;/y&gt;
+ *     &lt;/point&gt;
  * </pre>
  *
  * The annotation causes an global element declaration to be produced
@@ -86,14 +86,14 @@
  * the XML schema type to which the class is mapped.
  *
  * <pre>
- *     &lt;!-- Example: XML schema definition -->
- *     &lt;xs:element name="point" type="point"/>
- *     &lt;xs:complexType name="point">
- *       &lt;xs:sequence>
- *         &lt;xs:element name="x" type="xs:int"/>
- *         &lt;xs:element name="y" type="xs:int"/>
- *       &lt;/xs:sequence>
- *     &lt;/xs:complexType>
+ *     &lt;!-- Example: XML schema definition --&gt;
+ *     &lt;xs:element name="point" type="point"/&gt;
+ *     &lt;xs:complexType name="point"&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="x" type="xs:int"/&gt;
+ *         &lt;xs:element name="y" type="xs:int"/&gt;
+ *       &lt;/xs:sequence&gt;
+ *     &lt;/xs:complexType&gt;
  * </pre>
  *
  * <p>
@@ -114,25 +114,25 @@
  *     //Example: Code fragment corresponding to XML output *
  *     marshal( new Point3D(3,5,0), System.out );
  *
- *     &lt;!-- Example: XML output -->
- *     &lt;!-- The element name is point3D not point -->
- *     &lt;point3D>
- *       &lt;x>3&lt;/x>
- *       &lt;y>5&lt;/y>
- *       &lt;z>0&lt;/z>
- *     &lt;/point3D>
+ *     &lt;!-- Example: XML output --&gt;
+ *     &lt;!-- The element name is point3D not point --&gt;
+ *     &lt;point3D&gt;
+ *       &lt;x&gt;3&lt;/x&gt;
+ *       &lt;y&gt;5&lt;/y&gt;
+ *       &lt;z&gt;0&lt;/z&gt;
+ *     &lt;/point3D&gt;
  *
- *     &lt;!-- Example: XML schema definition -->
- *     &lt;xs:element name="point3D" type="point3D"/>
- *     &lt;xs:complexType name="point3D">
- *       &lt;xs:complexContent>
- *         &lt;xs:extension base="point">
- *           &lt;xs:sequence>
- *             &lt;xs:element name="z" type="xs:int"/>
- *           &lt;/xs:sequence>
- *         &lt;/xs:extension>
- *       &lt;/xs:complexContent>
- *     &lt;/xs:complexType>
+ *     &lt;!-- Example: XML schema definition --&gt;
+ *     &lt;xs:element name="point3D" type="point3D"/&gt;
+ *     &lt;xs:complexType name="point3D"&gt;
+ *       &lt;xs:complexContent&gt;
+ *         &lt;xs:extension base="point"&gt;
+ *           &lt;xs:sequence&gt;
+ *             &lt;xs:element name="z" type="xs:int"/&gt;
+ *           &lt;/xs:sequence&gt;
+ *         &lt;/xs:extension&gt;
+ *       &lt;/xs:complexContent&gt;
+ *     &lt;/xs:complexType&gt;
  * </pre>
  *
  * <b>Example 3: </b> Associate a global element with XML Schema type
@@ -145,13 +145,13 @@
  *         public java.math.BigDecimal price;
  *     }
  *
- *     &lt;!-- Example: XML schema definition -->
- *     &lt;xs:element name="PriceElement" type="USPrice"/>
- *     &lt;xs:complexType name="USPrice">
- *       &lt;xs:sequence>
- *         &lt;xs:element name="price" type="xs:decimal"/>
- *       &lt;/sequence>
- *     &lt;/xs:complexType>
+ *     &lt;!-- Example: XML schema definition --&gt;
+ *     &lt;xs:element name="PriceElement" type="USPrice"/&gt;
+ *     &lt;xs:complexType name="USPrice"&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="price" type="xs:decimal"/&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/xs:complexType&gt;
  * </pre>
  *
  * @author Sekhar Vajjhala, Sun Microsystems, Inc.
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlSchema.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlSchema.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -55,7 +55,6 @@
  *        will allow the package level annotations to be defined in
  *        package-info.java.
  * </ul>
- * <p>
  *
  * <p><b>Example 1:</b> Customize name of XML namespace to which
  * package is mapped.</p>
@@ -65,14 +64,14 @@
  *      namespace = "http://www.example.com/MYPO1"
  *    )
  *
- *    &lt;!-- XML Schema fragment -->
+ *    &lt;!-- XML Schema fragment --&gt;
  *    &lt;schema
  *      xmlns=...
  *      xmlns:po=....
  *      targetNamespace="http://www.example.com/MYPO1"
- *    >
+ *    &gt;
  *    &lt;!-- prefixes generated by default are implementation
- *            depedenent -->
+ *            depedenent --&gt;
  * </pre>
  *
  * <p><b>Example 2:</b> Customize namespace prefix, namespace URI
@@ -90,11 +89,11 @@
  *      )
  *    )
  *
- *    &lt;!-- XML Schema fragment -->
+ *    &lt;!-- XML Schema fragment --&gt;
  *    &lt;schema
  *        xmlns:xs="http://www.w3.org/2001/XMLSchema"
  *        xmlns:po="http://www.example.com/PO1"
- *        targetNamespace="http://www.example.com/PO1">
+ *        targetNamespace="http://www.example.com/PO1"&gt;
  *
  * </pre>
  *
@@ -105,11 +104,11 @@
  *      ...
  *    )
  *
- *    &lt;!-- XML Schema fragment -->
+ *    &lt;!-- XML Schema fragment --&gt;
  *    &lt;schema
  *        xmlns="http://www.w3.org/2001/XMLSchema"
  *        xmlns:po="http://www.example.com/PO1"
- *        elementFormDefault="unqualified">
+ *        elementFormDefault="unqualified"&gt;
  *
  * </pre>
 
@@ -180,11 +179,11 @@
      * More precisely, the value must be either <tt>""</tt>, <tt>"##generate"</tt>, or
      * <a href="http://www.w3.org/TR/xmlschema-2/#anyURI">
      * a valid lexical representation of <tt>xs:anyURI</tt></a> that begins
-     * with <tt>&lt;scheme>:</tt>.
+     * with <tt>&lt;scheme&gt;:</tt>.
      *
      * <p>
      * A schema generator is expected to generate a corresponding
-     * <tt>&lt;xs:import namespace="..." schemaLocation="..."/></tt> (or
+     * <tt>&lt;xs:import namespace="..." schemaLocation="..."/&gt;</tt> (or
      * no <tt>schemaLocation</tt> attribute at all if the empty string is specified.)
      * However, the schema generator is allowed to use a different value in
      * the <tt>schemaLocation</tt> attribute (including not generating
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlSchemaType.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlSchemaType.java	Wed Feb 18 19:27:49 2015 -0800
@@ -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
@@ -66,12 +66,12 @@
  *         public XMLGregorianCalendar date;
  *     }
  *
- *     &lt;!-- Example: Local XML Schema element -->
- *     &lt;xs:complexType name="USPrice"/>
- *       &lt;xs:sequence>
- *         &lt;xs:element name="date" type="xs:date"/>
- *       &lt;/sequence>
- *     &lt;/xs:complexType>
+ *     &lt;!-- Example: Local XML Schema element --&gt;
+ *     &lt;xs:complexType name="USPrice"/&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="date" type="xs:date"/&gt;
+ *       &lt;/sequence&gt;
+ *     &lt;/xs:complexType&gt;
  * </pre>
  *
  * <p> <b> Example 2: </b> Customize mapping of XMLGregorianCalendar at package
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlTransient.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlTransient.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -79,12 +79,12 @@
  *   }
  *
  *
- *   &lt;!-- Example: XML Schema fragment -->
- *   &lt;xs:complexType name="USAddress">
- *     &lt;xs:sequence>
- *       &lt;xs:element name="name" type="xs:string"/>
- *     &lt;/xs:sequence>
- *   &lt;/xs:complexType>
+ *   &lt;!-- Example: XML Schema fragment --&gt;
+ *   &lt;xs:complexType name="USAddress"&gt;
+ *     &lt;xs:sequence&gt;
+ *       &lt;xs:element name="name" type="xs:string"/&gt;
+ *     &lt;/xs:sequence&gt;
+ *   &lt;/xs:complexType&gt;
  * </pre>
  *
  * @author Sekhar Vajjhala, Sun Microsystems, Inc.
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlType.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlType.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -64,7 +64,7 @@
  * mapping of JavaBean properties and fields contained within the
  * class. The schema type to which the class is mapped can either be
  * named or anonymous. A class can be mapped to an anonymous schema
- * type by annotating the class with <tt>&#64XmlType(name="")</tt>.
+ * type by annotating the class with <tt>&#64;XmlType(name="")</tt>.
  * <p>
  * Either a global element, local element or a local attribute can be
  * associated with an anonymous type as follows:
@@ -112,14 +112,14 @@
  * The following table shows the mapping of the class to a XML Schema
  * complex type or simple type. The notational symbols used in the table are:
  * <ul>
- *   <li> ->    : represents a mapping </li>
+ *   <li> -&gt;    : represents a mapping </li>
  *   <li> [x]+  : one or more occurances of x </li>
  *   <li> [ <tt>@XmlValue</tt> property ]: JavaBean property annotated with
  *         <tt>@XmlValue</tt></li>
  *   <li> X     : don't care
  * </ul>
  * <blockquote>
- *   <table border="1" cellpadding="4" cellspacing="3">
+ *   <table summary="" border="1" cellpadding="4" cellspacing="3">
  *     <tbody>
  *       <tr>
  *         <td><b>Target</b></td>
@@ -132,7 +132,7 @@
  *       <tr valign="top">
  *         <td>Class</td>
  *         <td>{}</td>
- *         <td>[property]+ -> elements</td>
+ *         <td>[property]+ -&gt; elements</td>
  *         <td>complexcontent<br>xs:all</td>
  *         <td> </td>
  *       </tr>
@@ -140,7 +140,7 @@
  *       <tr valign="top">
  *         <td>Class</td>
  *         <td>non empty</td>
- *         <td>[property]+ -> elements</td>
+ *         <td>[property]+ -&gt; elements</td>
  *         <td>complexcontent<br>xs:sequence</td>
  *         <td> </td>
  *       </tr>
@@ -148,7 +148,7 @@
  *       <tr valign="top">
  *         <td>Class</td>
  *         <td>X</td>
- *         <td>no property -> element</td>
+ *         <td>no property -&gt; element</td>
  *         <td>complexcontent<br>empty sequence</td>
  *         <td> </td>
  *       </tr>
@@ -156,8 +156,7 @@
  *       <tr valign="top">
  *         <td>Class</td>
  *         <td>X</td>
- *         <td>1 [ <tt>@XmlValue</tt> property] && <br> [property]+
- *             ->attributes</td>
+ *         <td>1 [<tt>@XmlValue</tt> property] {@literal &&} <br> [property]+ -&gt; attributes</td>
  *         <td>simplecontent</td>
  *         <td> </td>
  *       </tr>
@@ -165,11 +164,9 @@
  *       <tr valign="top">
  *         <td>Class</td>
  *         <td>X</td>
- *         <td>1 [ <tt>@XmlValue</tt> property ]&& <br> no properties
- *         -> attribute</td>
+ *         <td>1 [<tt>@XmlValue</tt> property] {@literal &&} <br> no properties -&gt; attribute</td>
  *         <td> </td>
  *         <td>simpletype</td>
- *         <td> </td>
  *       </tr>
  *     </tbody>
  *   </table>
@@ -212,16 +209,16 @@
  *     void setZip(java.math.BigDecimal) {..};
  *   }
  *
- *   &lt;!-- XML Schema mapping for USAddress -->
- *   &lt;xs:complexType name="USAddress">
- *     &lt;xs:sequence>
- *       &lt;xs:element name="street" type="xs:string"/>
- *       &lt;xs:element name="city" type="xs:string"/>
- *       &lt;xs:element name="state" type="xs:string"/>
- *       &lt;xs:element name="zip" type="xs:decimal"/>
- *       &lt;xs:element name="name" type="xs:string"/>
- *     &lt;/xs:all>
- *   &lt;/xs:complexType>
+ *   &lt;!-- XML Schema mapping for USAddress --&gt;
+ *   &lt;xs:complexType name="USAddress"&gt;
+ *     &lt;xs:sequence&gt;
+ *       &lt;xs:element name="street" type="xs:string"/&gt;
+ *       &lt;xs:element name="city" type="xs:string"/&gt;
+ *       &lt;xs:element name="state" type="xs:string"/&gt;
+ *       &lt;xs:element name="zip" type="xs:decimal"/&gt;
+ *       &lt;xs:element name="name" type="xs:string"/&gt;
+ *     &lt;/xs:all&gt;
+ *   &lt;/xs:complexType&gt;
  * </pre>
  * <p> <b> Example 2: </b> Map a class to a complex type with
  *     xs:all </p>
@@ -229,16 +226,16 @@
  * &#64;XmlType(propOrder={})
  * public class USAddress { ...}
  *
- * &lt;!-- XML Schema mapping for USAddress -->
- * &lt;xs:complexType name="USAddress">
- *   &lt;xs:all>
- *     &lt;xs:element name="name" type="xs:string"/>
- *     &lt;xs:element name="street" type="xs:string"/>
- *     &lt;xs:element name="city" type="xs:string"/>
- *     &lt;xs:element name="state" type="xs:string"/>
- *     &lt;xs:element name="zip" type="xs:decimal"/>
- *   &lt;/xs:sequence>
- * &lt;/xs:complexType>
+ * &lt;!-- XML Schema mapping for USAddress --&gt;
+ * &lt;xs:complexType name="USAddress"&gt;
+ *   &lt;xs:all&gt;
+ *     &lt;xs:element name="name" type="xs:string"/&gt;
+ *     &lt;xs:element name="street" type="xs:string"/&gt;
+ *     &lt;xs:element name="city" type="xs:string"/&gt;
+ *     &lt;xs:element name="state" type="xs:string"/&gt;
+ *     &lt;xs:element name="zip" type="xs:decimal"/&gt;
+ *   &lt;/xs:sequence&gt;
+ * &lt;/xs:complexType&gt;
  *</pre>
  * <p> <b> Example 3: </b> Map a class to a global element with an
  * anonymous type.
@@ -248,22 +245,22 @@
  *   &#64;XmlType(name="")
  *   public class USAddress { ...}
  *
- *   &lt;!-- XML Schema mapping for USAddress -->
- *   &lt;xs:element name="USAddress">
- *     &lt;xs:complexType>
- *       &lt;xs:sequence>
- *         &lt;xs:element name="name" type="xs:string"/>
- *         &lt;xs:element name="street" type="xs:string"/>
- *         &lt;xs:element name="city" type="xs:string"/>
- *         &lt;xs:element name="state" type="xs:string"/>
- *         &lt;xs:element name="zip" type="xs:decimal"/>
- *       &lt;/xs:sequence>
- *     &lt;/xs:complexType>
- *   &lt;/xs:element>
+ *   &lt;!-- XML Schema mapping for USAddress --&gt;
+ *   &lt;xs:element name="USAddress"&gt;
+ *     &lt;xs:complexType&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="name" type="xs:string"/&gt;
+ *         &lt;xs:element name="street" type="xs:string"/&gt;
+ *         &lt;xs:element name="city" type="xs:string"/&gt;
+ *         &lt;xs:element name="state" type="xs:string"/&gt;
+ *         &lt;xs:element name="zip" type="xs:decimal"/&gt;
+ *       &lt;/xs:sequence&gt;
+ *     &lt;/xs:complexType&gt;
+ *   &lt;/xs:element&gt;
  * </pre>
  *
  * <p> <b> Example 4: </b> Map a property to a local element with
- * anonmyous type.
+ * anonymous type.
  * <pre>
  *   //Example: Code fragment
  *   public class Invoice {
@@ -275,20 +272,20 @@
  *   public class USAddress { ... }
  *   }
  *
- *   &lt;!-- XML Schema mapping for USAddress -->
- *   &lt;xs:complexType name="Invoice">
- *     &lt;xs:sequence>
- *       &lt;xs:element name="addr">
- *         &lt;xs:complexType>
- *           &lt;xs:element name="name", type="xs:string"/>
- *           &lt;xs:element name="city", type="xs:string"/>
- *           &lt;xs:element name="city" type="xs:string"/>
- *           &lt;xs:element name="state" type="xs:string"/>
- *           &lt;xs:element name="zip" type="xs:decimal"/>
- *         &lt;/xs:complexType>
+ *   &lt;!-- XML Schema mapping for USAddress --&gt;
+ *   &lt;xs:complexType name="Invoice"&gt;
+ *     &lt;xs:sequence&gt;
+ *       &lt;xs:element name="addr"&gt;
+ *         &lt;xs:complexType&gt;
+ *           &lt;xs:element name="name", type="xs:string"/&gt;
+ *           &lt;xs:element name="city", type="xs:string"/&gt;
+ *           &lt;xs:element name="city" type="xs:string"/&gt;
+ *           &lt;xs:element name="state" type="xs:string"/&gt;
+ *           &lt;xs:element name="zip" type="xs:decimal"/&gt;
+ *         &lt;/xs:complexType&gt;
  *       ...
- *     &lt;/xs:sequence>
- *   &lt;/xs:complexType>
+ *     &lt;/xs:sequence&gt;
+ *   &lt;/xs:complexType&gt;
  * </pre>
  *
  * <p> <b> Example 5: </b> Map a property to an attribute with
@@ -310,17 +307,17 @@
  *         public java.math.BigDecimal price;
  *     }
  *
- *     &lt;!-- Example: XML Schema fragment -->
- *     &lt;xs:complexType name="Item">
- *       &lt;xs:sequence>
- *         &lt;xs:element name="name" type="xs:string"/>
- *         &lt;xs:attribute name="price">
- *           &lt;xs:simpleType>
- *             &lt;xs:restriction base="xs:decimal"/>
- *           &lt;/xs:simpleType>
- *         &lt;/xs:attribute>
- *       &lt;/xs:sequence>
- *     &lt;/xs:complexType>
+ *     &lt;!-- Example: XML Schema fragment --&gt;
+ *     &lt;xs:complexType name="Item"&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="name" type="xs:string"/&gt;
+ *         &lt;xs:attribute name="price"&gt;
+ *           &lt;xs:simpleType&gt;
+ *             &lt;xs:restriction base="xs:decimal"/&gt;
+ *           &lt;/xs:simpleType&gt;
+ *         &lt;/xs:attribute&gt;
+ *       &lt;/xs:sequence&gt;
+ *     &lt;/xs:complexType&gt;
  * </pre>
  *
  *  <p> <b> Example 6: </b> Define a factoryClass and factoryMethod
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlValue.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/XmlValue.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -67,7 +67,6 @@
  *       type, then the type must map to a XML Schema simple type. </li>
  *
  * </ul>
- * </p>
  * <p>
  * If the annotated JavaBean property is the sole class member being
  * mapped to XML Schema construct, then the class is mapped to a
@@ -89,10 +88,10 @@
  *         public java.math.BigDecimal price;
  *     }
  *
- *     &lt;!-- Example 1: XML Schema fragment -->
- *     &lt;xs:simpleType name="USPrice">
- *       &lt;xs:restriction base="xs:decimal"/>
- *     &lt;/xs:simpleType>
+ *     &lt;!-- Example 1: XML Schema fragment --&gt;
+ *     &lt;xs:simpleType name="USPrice"&gt;
+ *       &lt;xs:restriction base="xs:decimal"/&gt;
+ *     &lt;/xs:simpleType&gt;
  *
  *   </pre>
  *
@@ -110,17 +109,16 @@
  *       public String currency;
  *   }
  *
- *   &lt;!-- Example 2: XML Schema fragment -->
- *   &lt;xs:complexType name="InternationalPrice">
- *     &lt;xs:simpleContent>
- *       &lt;xs:extension base="xs:decimal">
- *         &lt;xs:attribute name="currency" type="xs:string"/>
- *       &lt;/xs:extension>
- *     &lt;/xs:simpleContent>
- *   &lt;/xs:complexType>
+ *   &lt;!-- Example 2: XML Schema fragment --&gt;
+ *   &lt;xs:complexType name="InternationalPrice"&gt;
+ *     &lt;xs:simpleContent&gt;
+ *       &lt;xs:extension base="xs:decimal"&gt;
+ *         &lt;xs:attribute name="currency" type="xs:string"/&gt;
+ *       &lt;/xs:extension&gt;
+ *     &lt;/xs:simpleContent&gt;
+ *   &lt;/xs:complexType&gt;
  *
  *   </pre>
- * </p>
  *
  * @author Sekhar Vajjhala, Sun Microsystems, Inc.
  * @see XmlType
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/adapters/XmlAdapter.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/annotation/adapters/XmlAdapter.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2004, 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
@@ -76,11 +76,11 @@
  * <p> <b> Step 1: </b> Determine the desired XML representation for HashMap.
  *
  * <pre>
- *     &lt;hashmap>
- *         &lt;entry key="id123">this is a value&lt;/entry>
- *         &lt;entry key="id312">this is another value&lt;/entry>
+ *     &lt;hashmap&gt;
+ *         &lt;entry key="id123"&gt;this is a value&lt;/entry&gt;
+ *         &lt;entry key="id312"&gt;this is another value&lt;/entry&gt;
  *         ...
- *       &lt;/hashmap>
+ *       &lt;/hashmap&gt;
  * </pre>
  *
  * <p> <b> Step 2: </b> Determine the schema definition that the
@@ -88,20 +88,20 @@
  *
  * <pre>
  *
- *     &lt;xs:complexType name="myHashMapType">
- *       &lt;xs:sequence>
+ *     &lt;xs:complexType name="myHashMapType"&gt;
+ *       &lt;xs:sequence&gt;
  *         &lt;xs:element name="entry" type="myHashMapEntryType"
- *                        minOccurs = "0" maxOccurs="unbounded"/>
- *       &lt;/xs:sequence>
- *     &lt;/xs:complexType>
+ *                        minOccurs = "0" maxOccurs="unbounded"/&gt;
+ *       &lt;/xs:sequence&gt;
+ *     &lt;/xs:complexType&gt;
  *
- *     &lt;xs:complexType name="myHashMapEntryType">
- *       &lt;xs:simpleContent>
- *         &lt;xs:extension base="xs:string">
- *           &lt;xs:attribute name="key" type="xs:int"/>
- *         &lt;/xs:extension>
- *       &lt;/xs:simpleContent>
- *     &lt;/xs:complexType>
+ *     &lt;xs:complexType name="myHashMapEntryType"&gt;
+ *       &lt;xs:simpleContent&gt;
+ *         &lt;xs:extension base="xs:string"&gt;
+ *           &lt;xs:attribute name="key" type="xs:int"/&gt;
+ *         &lt;/xs:extension&gt;
+ *       &lt;/xs:simpleContent&gt;
+ *     &lt;/xs:complexType&gt;
  *
  * </pre>
  *
@@ -110,7 +110,7 @@
  *
  * <pre>
  *     public class MyHashMapType {
- *         List&lt;MyHashMapEntryType> entry;
+ *         List&lt;MyHashMapEntryType&gt; entry;
  *     }
  *
  *     public class MyHashMapEntryType {
@@ -127,7 +127,7 @@
  *
  * <pre>
  *     public final class MyHashMapAdapter extends
- *                        XmlAdapter&lt;MyHashMapType,HashMap> { ... }
+ *                        XmlAdapter&lt;MyHashMapType,HashMap&gt; { ... }
  *
  * </pre>
  *
@@ -144,11 +144,11 @@
  * The above code fragment will map to the following schema:
  *
  * <pre>
- *     &lt;xs:complexType name="Foo">
- *       &lt;xs:sequence>
- *         &lt;xs:element name="hashmap" type="myHashMapType"
- *       &lt;/xs:sequence>
- *     &lt;/xs:complexType>
+ *     &lt;xs:complexType name="Foo"&gt;
+ *       &lt;xs:sequence&gt;
+ *         &lt;xs:element name="hashmap" type="myHashMapType"&gt;
+ *       &lt;/xs:sequence&gt;
+ *     &lt;/xs:complexType&gt;
  * </pre>
  *
  * @param <BoundType>
--- a/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/attachment/AttachmentUnmarshaller.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.bind/share/classes/javax/xml/bind/attachment/AttachmentUnmarshaller.java	Wed Feb 18 19:27:49 2015 -0800
@@ -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
@@ -70,7 +70,7 @@
     *
     * <p>The returned <code>DataHandler</code> instance must be configured
     * to meet the following required mapping constaint.
-    * <table border="2" rules="all" cellpadding="4">
+    * <table summary="" border="2" rules="all" cellpadding="4">
     *   <thead>
     *     <tr>
     *       <th align="center" colspan="2">
@@ -100,7 +100,7 @@
     *     </tr>
     *   </tbody>
     *  </table>
-    * Note that it is allowable to support additional mappings.</p>
+    * Note that it is allowable to support additional mappings.
     *
     * @param cid It is expected to be a valid lexical form of the XML Schema
     * <code>xs:anyURI</code> datatype. If <code>{@link #isXOPPackage()}
--- a/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/ws/util/version.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/ws/util/version.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -23,7 +23,7 @@
 # questions.
 #
 
-build-id=2.2.11-b141124.1933
-build-version=JAX-WS RI 2.2.11-b141124.1933
+build-id=2.2.11-b150127.1410
+build-version=JAX-WS RI 2.2.11-b150127.1410
 major-version=2.2.11
-svn-revision=312b19a2e0e312b55e1ea6f531bd595955cd581f
+svn-revision=28121d09ed8ac02b76788709ccb4cdb66e03bbfa
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -30,10 +30,10 @@
     Non-existent directory: {0}
 
 VERSION = \
-        schemagen 2.2.12-b141016.1821
+        schemagen 2.2.12-b150126.1924
 
 FULLVERSION = \
-        schemagen full version "2.2.12-b141016.1821"
+        schemagen full version "2.2.12-b150126.1924"
 
 USAGE = \
 Usage: schemagen [-options ...] <java files> \n\
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_de.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_de.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = Nicht vorhandenes Verzeichnis: {0}
 
-VERSION = schemagen 2.2.12-b141016.1821
+VERSION = schemagen 2.2.12-b150126.1924
 
-FULLVERSION = schemagen vollst\u00E4ndige Version "2.2.12-b141016.1821"
+FULLVERSION = schemagen vollst\u00E4ndige Version "2.2.12-b150126.1924"
 
 USAGE = Verwendung: schemagen [-options ...] <java files> \nOptionen: \n\\ \\ \\ \\ -d <path>             : Gibt an, wo die von Prozessor und javac generierten Klassendateien gespeichert werden sollen\n\\ \\ \\ \\ -cp <path>            : Gibt an, wo die vom Benutzer angegebenen Dateien gespeichert sind\n\\ \\ \\ \\ -classpath <path>     : Gibt an, wo die vom Benutzer angegebenen Dateien gespeichert sind\n\\ \\ \\ \\ -encoding <encoding>  : Gibt die Codierung f\u00FCr die Annotationsverarbeitung/den javac-Aufruf an \n\\ \\ \\ \\ -episode <file>       : Generiert Episodendatei f\u00FCr separate Kompilierung\n\\ \\ \\ \\ -version              : Zeigt Versionsinformation an\n\\ \\ \\ \\ -fullversion          : Zeigt vollst\u00E4ndige Versionsinformationen an\n\\ \\ \\ \\ -help                 : Zeigt diese Verwendungsmeldung an
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_es.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_es.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = Directorio no existente: {0}
 
-VERSION = schemagen 2.2.12-b141016.1821
+VERSION = schemagen 2.2.12-b150126.1924
 
-FULLVERSION = versi\u00F3n completa de schemagen "2.2.12-b141016.1821"
+FULLVERSION = versi\u00F3n completa de schemagen "2.2.12-b150126.1924"
 
 USAGE = Sintaxis: schemagen [-options ...] <archivos java> \nOpciones: \n\\ \\ \\ \\ -d <ruta de acceso>             : especifique d\u00F3nde se colocan los archivos de clase generados por javac y el procesador\n\\ \\ \\ \\ -cp <ruta de acceso>            : especifique d\u00F3nde se encuentran los archivos especificados por el usuario\n\\ \\ \\ \\ -encoding <codificaci\u00F3n>  : especifique la codificaci\u00F3n que se va a utilizar para el procesamiento de anotaciones/llamada de javac\n\\ \\ \\ \\ -episode <archivo>       : genera un archivo de episodio para una compilaci\u00F3n diferente\n\\ \\ \\ \\ -version              : muestra la informaci\u00F3n de la versi\u00F3n\n\\ \\ \\ \\ -fullversion          : muestra la informaci\u00F3n completa de la versi\u00F3n\n\\ \\ \\ \\ -help                 : muestra este mensaje de sintaxis
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_fr.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_fr.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = R\u00E9pertoire {0} inexistant
 
-VERSION = schemagen 2.2.12-b141016.1821
+VERSION = schemagen 2.2.12-b150126.1924
 
-FULLVERSION = version compl\u00E8te de schemagen "2.2.12-b141016.1821"
+FULLVERSION = version compl\u00E8te de schemagen "2.2.12-b150126.1924"
 
 USAGE = Syntaxe : schemagen [-options ...] <java files> \nOptions : \n\ \ \ \ -d <path> : indiquez o\u00F9 placer les fichiers de classe g\u00E9n\u00E9r\u00E9s par le processeur et le compilateur javac\n\ \ \ \ -cp <path> : indiquez o\u00F9 trouver les fichiers sp\u00E9cifi\u00E9s par l'utilisateur\n\ \ \ \ -classpath <path> : indiquez o\u00F9 trouver les fichiers sp\u00E9cifi\u00E9s par l'utilisateur\n\ \ \ \ -encoding <encoding> : indiquez l'encodage \u00E0 utiliser pour l'appel de javac/traitement de l'annotation \n\ \ \ \ -episode <file> : g\u00E9n\u00E9rez un fichier d'\u00E9pisode pour la compilation s\u00E9par\u00E9e\n\ \ \ \ -version : affichez les informations de version\n\ \ \ \ -fullversion : affichez les informations compl\u00E8tes de version\n\ \ \ \ -help : affichez ce message de syntaxe
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_it.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_it.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = Directory non esistente: {0}
 
-VERSION = schemagen 2.2.12-b141016.1821
+VERSION = schemagen 2.2.12-b150126.1924
 
-FULLVERSION = versione completa schemagen "2.2.12-b141016.1821"
+FULLVERSION = versione completa schemagen "2.2.12-b150126.1924"
 
 USAGE = Uso: schemagen [-options ...] <java files> \nOpzioni: \n\ \ \ \ -d <path>             : specifica dove posizionare il processore e i file della classe generata javac\n\ \ \ \ -cp <path>            : specifica dove trovare i file specificati dall'utente\n\ \ \ \ -classpath <path>     : specifica dove trovare i file specificati dall'utente\n\ \ \ \ -encoding <encoding>  : specifica la codifica da usare per l'elaborazione dell'annotazione/richiamo javac \n\ \ \ \ -episode <file>       : genera il file di episodio per la compilazione separata\n\ \ \ \ -version              : visualizza le informazioni sulla versione\n\ \ \ \ -fullversion          : visualizza le informazioni sulla versione completa\n\ \ \ \ -help                 : visualizza questo messaggio sull'uso
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_ja.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_ja.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = \u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u304C\u5B58\u5728\u3057\u307E\u305B\u3093: {0}
 
-VERSION = schemagen 2.2.12-b141016.1821
+VERSION = schemagen 2.2.12-b150126.1924
 
-FULLVERSION = schemagen\u30D5\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3"2.2.12-b141016.1821"
+FULLVERSION = schemagen\u30D5\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3"2.2.12-b150126.1924"
 
 USAGE = \u4F7F\u7528\u65B9\u6CD5: schemagen [-options ...] <java files> \n\u30AA\u30D7\u30B7\u30E7\u30F3: \n\ \ \ \ -d <path>             : \u30D7\u30ED\u30BB\u30C3\u30B5\u304A\u3088\u3073javac\u304C\u751F\u6210\u3057\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u7F6E\u304F\u4F4D\u7F6E\u3092\u6307\u5B9A\u3057\u307E\u3059\n\ \ \ \ -cp <path>            : \u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3057\u307E\u3059\n\ \ \ \ -classpath <path>     : \u30E6\u30FC\u30B6\u30FC\u304C\u6307\u5B9A\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3057\u307E\u3059\n\ \ \ \ -encoding <encoding>  : \u6CE8\u91C8\u51E6\u7406/javac\u547C\u51FA\u3057\u306B\u4F7F\u7528\u3059\u308B\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3057\u307E\u3059\n\ \ \ \ -episode <file>       : \u30B3\u30F3\u30D1\u30A4\u30EB\u3054\u3068\u306B\u30A8\u30D4\u30BD\u30FC\u30C9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u751F\u6210\u3057\u307E\u3059\n\ \ \ \ -version              : \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u8868\u793A\u3057\u307E\u3059\n\ \ \ \ -fullversion          : \u30D5\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u8868\u793A\u3057\u307E\u3059\n\ \ \ \ -help                 : \u3053\u306E\u4F7F\u7528\u4F8B\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3057\u307E\u3059
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_ko.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_ko.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = \uC874\uC7AC\uD558\uC9C0 \uC54A\uB294 \uB514\uB809\uD1A0\uB9AC: {0}
 
-VERSION = schemagen 2.2.12-b141016.1821
+VERSION = schemagen 2.2.12-b150126.1924
 
-FULLVERSION = schemagen \uC815\uC2DD \uBC84\uC804 "2.2.12-b141016.1821"
+FULLVERSION = schemagen \uC815\uC2DD \uBC84\uC804 "2.2.12-b150126.1924"
 
 USAGE = \uC0AC\uC6A9\uBC95: schemagen [-options ...] <java files> \n\uC635\uC158: \n\ \ \ \ -d <path>             : \uD504\uB85C\uC138\uC11C \uBC0F javac\uC5D0\uC11C \uC0DD\uC131\uD55C \uD074\uB798\uC2A4 \uD30C\uC77C\uC744 \uBC30\uCE58\uD560 \uC704\uCE58\uB97C \uC9C0\uC815\uD569\uB2C8\uB2E4.\n\ \ \ \ -cp <path>            : \uC0AC\uC6A9\uC790\uAC00 \uC9C0\uC815\uD55C \uD30C\uC77C\uC744 \uCC3E\uC744 \uC704\uCE58\uB97C \uC9C0\uC815\uD569\uB2C8\uB2E4.\n\ \ \ \ -classpath <path>     : \uC0AC\uC6A9\uC790\uAC00 \uC9C0\uC815\uD55C \uD30C\uC77C\uC744 \uCC3E\uC744 \uC704\uCE58\uB97C \uC9C0\uC815\uD569\uB2C8\uB2E4.\n\ \ \ \ -encoding <encoding>  : \uC8FC\uC11D \uCC98\uB9AC/javac \uD638\uCD9C\uC5D0 \uC0AC\uC6A9\uD560 \uC778\uCF54\uB529\uC744 \uC9C0\uC815\uD569\uB2C8\uB2E4. \n\ \ \ \ -episode <file>       : \uBCC4\uB3C4 \uCEF4\uD30C\uC77C\uC744 \uC704\uD574 episode \uD30C\uC77C\uC744 \uC0DD\uC131\uD569\uB2C8\uB2E4.\n\ \ \ \ -version              : \uBC84\uC804 \uC815\uBCF4\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n\ \ \ \ -fullversion          : \uC815\uC2DD \uBC84\uC804 \uC815\uBCF4\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.\n\ \ \ \ -help                 : \uC774 \uC0AC\uC6A9\uBC95 \uBA54\uC2DC\uC9C0\uB97C \uD45C\uC2DC\uD569\uB2C8\uB2E4.
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_pt_BR.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_pt_BR.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = Diret\u00F3rio n\u00E3o existente: {0}
 
-VERSION = gera\u00E7\u00E3o do esquema 2.2.12-b141016.1821
+VERSION = gera\u00E7\u00E3o do esquema 2.2.12-b150126.1924
 
-FULLVERSION = vers\u00E3o completa da gera\u00E7\u00E3o do esquema "2.2.12-b141016.1821"
+FULLVERSION = vers\u00E3o completa da gera\u00E7\u00E3o do esquema "2.2.12-b150126.1924"
 
 USAGE = Uso: gera\u00E7\u00E3o do esquema [-options ...] <java files> \nOp\u00E7\u00F5es: \n\\ \\ \\ \\ -d <path>             : especificar onde colocar o processador e os arquivos da classe gerados por javac\n\\ \\ \\ \\ -cp <path>            : especificar onde localizar arquivos especificados pelo usu\u00E1rio\n\\ \\ \\ \\ -classpath <path>     : especificar onde localizar os arquivos especificados pelo usu\u00E1rio\n\\ \\ \\ \\ -encoding <encoding>  : especificar codifica\u00E7\u00E3o a ser usada para processamento de anota\u00E7\u00E3o/chamada javac \n\\ \\ \\ \\ -episode <file>       : gerar arquivo do epis\u00F3dio para compila\u00E7\u00E3o separada\n\\ \\ \\ \\ -version              : exibir informa\u00E7\u00F5es da vers\u00E3o\n\\ \\ \\ \\ -fullversion          : exibir informa\u00E7\u00F5es da vers\u00E3o completa\n\\ \\ \\ \\ -help                 : exibir esta mensagem de uso
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_zh_CN.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_zh_CN.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = \u4E0D\u5B58\u5728\u7684\u76EE\u5F55: {0}
 
-VERSION = schemagen 2.2.12-b141016.1821
+VERSION = schemagen 2.2.12-b150126.1924
 
-FULLVERSION = schemagen \u5B8C\u6574\u7248\u672C "2.2.12-b141016.1821"
+FULLVERSION = schemagen \u5B8C\u6574\u7248\u672C "2.2.12-b150126.1924"
 
 USAGE = \u7528\u6CD5: schemagen [-options ...] <java files> \n\u9009\u9879: \n\ \ \ \ -d <path>             : \u6307\u5B9A\u653E\u7F6E\u5904\u7406\u7A0B\u5E8F\u548C javac \u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ \ \ -cp <path>            : \u6307\u5B9A\u67E5\u627E\u7528\u6237\u6307\u5B9A\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ \ \ -classpath <path>     : \u6307\u5B9A\u67E5\u627E\u7528\u6237\u6307\u5B9A\u6587\u4EF6\u7684\u4F4D\u7F6E\n\ \ \ \ -encoding <encoding>  : \u6307\u5B9A\u7528\u4E8E\u6CE8\u91CA\u5904\u7406/javac \u8C03\u7528\u7684\u7F16\u7801\n\ \ \ \ -episode <file>       : \u751F\u6210\u7247\u6BB5\u6587\u4EF6\u4EE5\u4F9B\u5355\u72EC\u7F16\u8BD1\n\ \ \ \ -version              : \u663E\u793A\u7248\u672C\u4FE1\u606F\n\ \ \ \ -fullversion          : \u663E\u793A\u5B8C\u6574\u7684\u7248\u672C\u4FE1\u606F\n\ \ \ \ -help                 : \u663E\u793A\u6B64\u7528\u6CD5\u6D88\u606F
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_zh_TW.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/jxc/MessageBundle_zh_TW.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -27,8 +27,8 @@
 
 BASEDIR_DOESNT_EXIST = \u4E0D\u5B58\u5728\u7684\u76EE\u9304: {0}
 
-VERSION = schemagen 2.2.12-b141016.1821
+VERSION = schemagen 2.2.12-b150126.1924
 
-FULLVERSION = schemagen \u5B8C\u6574\u7248\u672C "2.2.12-b141016.1821"
+FULLVERSION = schemagen \u5B8C\u6574\u7248\u672C "2.2.12-b150126.1924"
 
 USAGE = \u7528\u6CD5: schemagen [-options ...] <java files> \n\u9078\u9805: \n\\ \\ \\ \\ -d <path>             : \u6307\u5B9A\u8655\u7406\u5668\u4EE5\u53CA javac \u7522\u751F\u7684\u985E\u5225\u6A94\u6848\u653E\u7F6E\u4F4D\u7F6E\n\\ \\ \\ \\ -cp <path>            : \u6307\u5B9A\u8981\u5C0B\u627E\u4F7F\u7528\u8005\u6307\u5B9A\u6A94\u6848\u7684\u4F4D\u7F6E\n\\ \\ \\ \\ -classpath <path>     : \u6307\u5B9A\u8981\u5C0B\u627E\u4F7F\u7528\u8005\u6307\u5B9A\u6A94\u6848\u7684\u4F4D\u7F6E\n\\ \\ \\ \\ -encoding <encoding>  : \u6307\u5B9A\u8981\u7528\u65BC\u8A3B\u89E3\u8655\u7406/javac \u547C\u53EB\u7684\u7DE8\u78BC \n\\ \\ \\ \\ -episode <file>       : \u7522\u751F\u7368\u7ACB\u7DE8\u8B6F\u7684\u4E8B\u4EF6 (episode) \u6A94\u6848\n\\ \\ \\ \\ -version              : \u986F\u793A\u7248\u672C\u8CC7\u8A0A\n\\ \\ \\ \\ -fullversion          : \u986F\u793A\u5B8C\u6574\u7248\u672C\u8CC7\u8A0A\n\\ \\ \\ \\ -help                 : \u986F\u793A\u6B64\u7528\u6CD5\u8A0A\u606F
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -171,20 +171,20 @@
 Driver.FailedToGenerateCode = \
         Failed to produce code.
 
-# DO NOT localize the 2.2.12-b141016.1821 string - it is a token for an mvn <properties filter>
+# DO NOT localize the 2.2.12-b150126.1924 string - it is a token for an mvn <properties filter>
 Driver.FilePrologComment = \
-        This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.12-b141016.1821 \n\
+        This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.12-b150126.1924 \n\
         See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\
         Any modifications to this file will be lost upon recompilation of the source schema. \n\
         Generated on: {0} \n
 
 Driver.Version = \
-        xjc 2.2.12-b141016.1821
+        xjc 2.2.12-b150126.1924
 
 Driver.FullVersion = \
-        xjc full version "2.2.12-b141016.1821"
+        xjc full version "2.2.12-b150126.1924"
 
-Driver.BuildID = 2.2.12-b141016.1821
+Driver.BuildID = 2.2.12-b150126.1924
 
 # for JDK integration - include version in source zip
 jaxb.jdk.version=@@JAXB_JDK_VERSION@@
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_de.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_de.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -96,14 +96,14 @@
 
 Driver.FailedToGenerateCode = Code konnte nicht erzeugt werden.
 
-# DO NOT localize the 2.2.12-b141016.1821 string - it is a token for an mvn <properties filter>
-Driver.FilePrologComment = Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.12-b141016.1821 generiert \nSiehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\u00c4nderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren. \nGeneriert: {0} \n
+# DO NOT localize the 2.2.12-b150126.1924 string - it is a token for an mvn <properties filter>
+Driver.FilePrologComment = Diese Datei wurde mit der JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.12-b150126.1924 generiert \nSiehe <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\u00c4nderungen an dieser Datei gehen bei einer Neukompilierung des Quellschemas verloren. \nGeneriert: {0} \n
 
-Driver.Version = xjc 2.2.12-b141016.1821
+Driver.Version = xjc 2.2.12-b150126.1924
 
-Driver.FullVersion = xjc vollst\u00E4ndige Version "2.2.12-b141016.1821"
+Driver.FullVersion = xjc vollst\u00E4ndige Version "2.2.12-b150126.1924"
 
-Driver.BuildID = 2.2.12-b141016.1821
+Driver.BuildID = 2.2.12-b150126.1924
 
 # for JDK integration - include version in source zip
 jaxb.jdk.version=@@JAXB_JDK_VERSION@@
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_es.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_es.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -96,14 +96,14 @@
 
 Driver.FailedToGenerateCode = Fallo al producir c\u00f3digo.
 
-# DO NOT localize the 2.2.12-b141016.1821 string - it is a token for an mvn <properties filter>
-Driver.FilePrologComment = Este archivo ha sido generado por la arquitectura JavaTM para la implantaci\u00f3n de la referencia de enlace (JAXB) XML v2.2.12-b141016.1821 \nVisite <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nTodas las modificaciones realizadas en este archivo se perder\u00e1n si se vuelve a compilar el esquema de origen. \nGenerado el: {0} \n
+# DO NOT localize the 2.2.12-b150126.1924 string - it is a token for an mvn <properties filter>
+Driver.FilePrologComment = Este archivo ha sido generado por la arquitectura JavaTM para la implantaci\u00f3n de la referencia de enlace (JAXB) XML v2.2.12-b150126.1924 \nVisite <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nTodas las modificaciones realizadas en este archivo se perder\u00e1n si se vuelve a compilar el esquema de origen. \nGenerado el: {0} \n
 
-Driver.Version = xjc 2.2.12-b141016.1821
+Driver.Version = xjc 2.2.12-b150126.1924
 
-Driver.FullVersion = versi\u00F3n completa de xjc "2.2.12-b141016.1821"
+Driver.FullVersion = versi\u00F3n completa de xjc "2.2.12-b150126.1924"
 
-Driver.BuildID = 2.2.12-b141016.1821
+Driver.BuildID = 2.2.12-b150126.1924
 
 # for JDK integration - include version in source zip
 jaxb.jdk.version=@@JAXB_JDK_VERSION@@
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_fr.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_fr.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -96,14 +96,14 @@
 
 Driver.FailedToGenerateCode = Echec de la production du code.
 
-# DO NOT localize the 2.2.12-b141016.1821 string - it is a token for an mvn <properties filter>
-Driver.FilePrologComment = Ce fichier a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9 par l''impl\u00e9mentation de r\u00e9f\u00e9rence JavaTM Architecture for XML Binding (JAXB), v2.2.12-b141016.1821 \nVoir <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nToute modification apport\u00e9e \u00e0 ce fichier sera perdue lors de la recompilation du sch\u00e9ma source. \nG\u00e9n\u00e9r\u00e9 le : {0} \n
+# DO NOT localize the 2.2.12-b150126.1924 string - it is a token for an mvn <properties filter>
+Driver.FilePrologComment = Ce fichier a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9 par l''impl\u00e9mentation de r\u00e9f\u00e9rence JavaTM Architecture for XML Binding (JAXB), v2.2.12-b150126.1924 \nVoir <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nToute modification apport\u00e9e \u00e0 ce fichier sera perdue lors de la recompilation du sch\u00e9ma source. \nG\u00e9n\u00e9r\u00e9 le : {0} \n
 
-Driver.Version = xjc 2.2.12-b141016.1821
+Driver.Version = xjc 2.2.12-b150126.1924
 
-Driver.FullVersion = version compl\u00E8te xjc "2.2.12-b141016.1821"
+Driver.FullVersion = version compl\u00E8te xjc "2.2.12-b150126.1924"
 
-Driver.BuildID = 2.2.12-b141016.1821
+Driver.BuildID = 2.2.12-b150126.1924
 
 # for JDK integration - include version in source zip
 jaxb.jdk.version=@@JAXB_JDK_VERSION@@
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_it.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_it.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -96,14 +96,14 @@
 
 Driver.FailedToGenerateCode = Produzione del codice non riuscita.
 
-# DO NOT localize the 2.2.12-b141016.1821 string - it is a token for an mvn <properties filter>
-Driver.FilePrologComment = Questo file \u00e8 stato generato dall''architettura JavaTM per XML Binding (JAXB) Reference Implementation, v2.2.12-b141016.1821 \nVedere <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nQualsiasi modifica a questo file andr\u00e0 persa durante la ricompilazione dello schema di origine. \nGenerato il: {0} \n
+# DO NOT localize the 2.2.12-b150126.1924 string - it is a token for an mvn <properties filter>
+Driver.FilePrologComment = Questo file \u00e8 stato generato dall''architettura JavaTM per XML Binding (JAXB) Reference Implementation, v2.2.12-b150126.1924 \nVedere <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nQualsiasi modifica a questo file andr\u00e0 persa durante la ricompilazione dello schema di origine. \nGenerato il: {0} \n
 
-Driver.Version = xjc 2.2.12-b141016.1821
+Driver.Version = xjc 2.2.12-b150126.1924
 
-Driver.FullVersion = versione completa xjc "2.2.12-b141016.1821"
+Driver.FullVersion = versione completa xjc "2.2.12-b150126.1924"
 
-Driver.BuildID = 2.2.12-b141016.1821
+Driver.BuildID = 2.2.12-b150126.1924
 
 # for JDK integration - include version in source zip
 jaxb.jdk.version=@@JAXB_JDK_VERSION@@
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_ja.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_ja.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -96,14 +96,14 @@
 
 Driver.FailedToGenerateCode = \u30b3\u30fc\u30c9\u306e\u751f\u6210\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002
 
-# DO NOT localize the 2.2.12-b141016.1821 string - it is a token for an mvn <properties filter>
-Driver.FilePrologComment = \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001JavaTM Architecture for XML Binding(JAXB) Reference Implementation\u3001v2.2.12-b141016.1821\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u307e\u3057\u305f \n<a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044 \n\u30bd\u30fc\u30b9\u30fb\u30b9\u30ad\u30fc\u30de\u306e\u518d\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5909\u66f4\u306f\u5931\u308f\u308c\u307e\u3059\u3002 \n\u751f\u6210\u65e5: {0} \n
+# DO NOT localize the 2.2.12-b150126.1924 string - it is a token for an mvn <properties filter>
+Driver.FilePrologComment = \u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306f\u3001JavaTM Architecture for XML Binding(JAXB) Reference Implementation\u3001v2.2.12-b150126.1924\u306b\u3088\u3063\u3066\u751f\u6210\u3055\u308c\u307e\u3057\u305f \n<a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>\u3092\u53c2\u7167\u3057\u3066\u304f\u3060\u3055\u3044 \n\u30bd\u30fc\u30b9\u30fb\u30b9\u30ad\u30fc\u30de\u306e\u518d\u30b3\u30f3\u30d1\u30a4\u30eb\u6642\u306b\u3053\u306e\u30d5\u30a1\u30a4\u30eb\u306e\u5909\u66f4\u306f\u5931\u308f\u308c\u307e\u3059\u3002 \n\u751f\u6210\u65e5: {0} \n
 
-Driver.Version = xjc 2.2.12-b141016.1821
+Driver.Version = xjc 2.2.12-b150126.1924
 
-Driver.FullVersion = xjc\u30D5\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3"2.2.12-b141016.1821"
+Driver.FullVersion = xjc\u30D5\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3"2.2.12-b150126.1924"
 
-Driver.BuildID = 2.2.12-b141016.1821
+Driver.BuildID = 2.2.12-b150126.1924
 
 # for JDK integration - include version in source zip
 jaxb.jdk.version=@@JAXB_JDK_VERSION@@
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_ko.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_ko.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -96,14 +96,14 @@
 
 Driver.FailedToGenerateCode = \ucf54\ub4dc \uc0dd\uc131\uc744 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4.
 
-# DO NOT localize the 2.2.12-b141016.1821 string - it is a token for an mvn <properties filter>
-Driver.FilePrologComment = \uc774 \ud30c\uc77c\uc740 JAXB(JavaTM Architecture for XML Binding) \ucc38\uc870 \uad6c\ud604 2.2.12-b141016.1821 \ubc84\uc804\uc744 \ud1b5\ud574 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \n<a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. \n\uc774 \ud30c\uc77c\uc744 \uc218\uc815\ud558\uba74 \uc18c\uc2a4 \uc2a4\ud0a4\ub9c8\ub97c \uc7ac\ucef4\ud30c\uc77c\ud560 \ub54c \uc218\uc815 \uc0ac\ud56d\uc774 \uc190\uc2e4\ub429\ub2c8\ub2e4. \n\uc0dd\uc131 \ub0a0\uc9dc: {0} \n
+# DO NOT localize the 2.2.12-b150126.1924 string - it is a token for an mvn <properties filter>
+Driver.FilePrologComment = \uc774 \ud30c\uc77c\uc740 JAXB(JavaTM Architecture for XML Binding) \ucc38\uc870 \uad6c\ud604 2.2.12-b150126.1924 \ubc84\uc804\uc744 \ud1b5\ud574 \uc0dd\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4. \n<a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a>\ub97c \ucc38\uc870\ud558\uc2ed\uc2dc\uc624. \n\uc774 \ud30c\uc77c\uc744 \uc218\uc815\ud558\uba74 \uc18c\uc2a4 \uc2a4\ud0a4\ub9c8\ub97c \uc7ac\ucef4\ud30c\uc77c\ud560 \ub54c \uc218\uc815 \uc0ac\ud56d\uc774 \uc190\uc2e4\ub429\ub2c8\ub2e4. \n\uc0dd\uc131 \ub0a0\uc9dc: {0} \n
 
-Driver.Version = XJC 2.2.12-b141016.1821
+Driver.Version = XJC 2.2.12-b150126.1924
 
-Driver.FullVersion = XJC \uC815\uC2DD \uBC84\uC804 "2.2.12-b141016.1821"
+Driver.FullVersion = XJC \uC815\uC2DD \uBC84\uC804 "2.2.12-b150126.1924"
 
-Driver.BuildID = 2.2.12-b141016.1821
+Driver.BuildID = 2.2.12-b150126.1924
 
 # for JDK integration - include version in source zip
 jaxb.jdk.version=@@JAXB_JDK_VERSION@@
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_pt_BR.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_pt_BR.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -96,14 +96,14 @@
 
 Driver.FailedToGenerateCode = Falha ao produzir o c\u00f3digo.
 
-# DO NOT localize the 2.2.12-b141016.1821 string - it is a token for an mvn <properties filter>
-Driver.FilePrologComment = Este arquivo foi gerado pela Arquitetura JavaTM para Implementa\u00e7\u00e3o de Refer\u00eancia (JAXB) de Bind XML, v2.2.12-b141016.1821 \nConsulte <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nTodas as modifica\u00e7\u00f5es neste arquivo ser\u00e3o perdidas ap\u00f3s a recompila\u00e7\u00e3o do esquema de origem. \nGerado em: {0} \n
+# DO NOT localize the 2.2.12-b150126.1924 string - it is a token for an mvn <properties filter>
+Driver.FilePrologComment = Este arquivo foi gerado pela Arquitetura JavaTM para Implementa\u00e7\u00e3o de Refer\u00eancia (JAXB) de Bind XML, v2.2.12-b150126.1924 \nConsulte <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \nTodas as modifica\u00e7\u00f5es neste arquivo ser\u00e3o perdidas ap\u00f3s a recompila\u00e7\u00e3o do esquema de origem. \nGerado em: {0} \n
 
-Driver.Version = xjc 2.2.12-b141016.1821
+Driver.Version = xjc 2.2.12-b150126.1924
 
-Driver.FullVersion = vers\u00E3o completa de xjc "2.2.12-b141016.1821"
+Driver.FullVersion = vers\u00E3o completa de xjc "2.2.12-b150126.1924"
 
-Driver.BuildID = 2.2.12-b141016.1821
+Driver.BuildID = 2.2.12-b150126.1924
 
 # for JDK integration - include version in source zip
 jaxb.jdk.version=@@JAXB_JDK_VERSION@@
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_zh_CN.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_zh_CN.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -96,14 +96,14 @@
 
 Driver.FailedToGenerateCode = \u65e0\u6cd5\u751f\u6210\u4ee3\u7801\u3002
 
-# DO NOT localize the 2.2.12-b141016.1821 string - it is a token for an mvn <properties filter>
-Driver.FilePrologComment = \u6b64\u6587\u4ef6\u662f\u7531 JavaTM Architecture for XML Binding (JAXB) \u5f15\u7528\u5b9e\u73b0 v2.2.12-b141016.1821 \u751f\u6210\u7684\n\u8bf7\u8bbf\u95ee <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\u5728\u91cd\u65b0\u7f16\u8bd1\u6e90\u6a21\u5f0f\u65f6, \u5bf9\u6b64\u6587\u4ef6\u7684\u6240\u6709\u4fee\u6539\u90fd\u5c06\u4e22\u5931\u3002\n\u751f\u6210\u65f6\u95f4: {0} \n
+# DO NOT localize the 2.2.12-b150126.1924 string - it is a token for an mvn <properties filter>
+Driver.FilePrologComment = \u6b64\u6587\u4ef6\u662f\u7531 JavaTM Architecture for XML Binding (JAXB) \u5f15\u7528\u5b9e\u73b0 v2.2.12-b150126.1924 \u751f\u6210\u7684\n\u8bf7\u8bbf\u95ee <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\u5728\u91cd\u65b0\u7f16\u8bd1\u6e90\u6a21\u5f0f\u65f6, \u5bf9\u6b64\u6587\u4ef6\u7684\u6240\u6709\u4fee\u6539\u90fd\u5c06\u4e22\u5931\u3002\n\u751f\u6210\u65f6\u95f4: {0} \n
 
-Driver.Version = xjc 2.2.12-b141016.1821
+Driver.Version = xjc 2.2.12-b150126.1924
 
-Driver.FullVersion = xjc \u5B8C\u6574\u7248\u672C "2.2.12-b141016.1821"
+Driver.FullVersion = xjc \u5B8C\u6574\u7248\u672C "2.2.12-b150126.1924"
 
-Driver.BuildID = 2.2.12-b141016.1821
+Driver.BuildID = 2.2.12-b150126.1924
 
 # for JDK integration - include version in source zip
 jaxb.jdk.version=@@JAXB_JDK_VERSION@@
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_zh_TW.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/MessageBundle_zh_TW.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -96,14 +96,14 @@
 
 Driver.FailedToGenerateCode = \u7121\u6cd5\u7522\u751f\u7a0b\u5f0f\u78bc.
 
-# DO NOT localize the 2.2.12-b141016.1821 string - it is a token for an mvn <properties filter>
-Driver.FilePrologComment = \u6b64\u6a94\u6848\u662f\u7531 JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.12-b141016.1821 \u6240\u7522\u751f \n\u8acb\u53c3\u95b1 <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\u4e00\u65e6\u91cd\u65b0\u7de8\u8b6f\u4f86\u6e90\u7db1\u8981, \u5c0d\u6b64\u6a94\u6848\u6240\u505a\u7684\u4efb\u4f55\u4fee\u6539\u90fd\u5c07\u6703\u907a\u5931. \n\u7522\u751f\u6642\u9593: {0} \n
+# DO NOT localize the 2.2.12-b150126.1924 string - it is a token for an mvn <properties filter>
+Driver.FilePrologComment = \u6b64\u6a94\u6848\u662f\u7531 JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.12-b150126.1924 \u6240\u7522\u751f \n\u8acb\u53c3\u95b1 <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> \n\u4e00\u65e6\u91cd\u65b0\u7de8\u8b6f\u4f86\u6e90\u7db1\u8981, \u5c0d\u6b64\u6a94\u6848\u6240\u505a\u7684\u4efb\u4f55\u4fee\u6539\u90fd\u5c07\u6703\u907a\u5931. \n\u7522\u751f\u6642\u9593: {0} \n
 
-Driver.Version = xjc 2.2.12-b141016.1821
+Driver.Version = xjc 2.2.12-b150126.1924
 
-Driver.FullVersion = xjc \u5B8C\u6574\u7248\u672C "2.2.12-b141016.1821"
+Driver.FullVersion = xjc \u5B8C\u6574\u7248\u672C "2.2.12-b150126.1924"
 
-Driver.BuildID = 2.2.12-b141016.1821
+Driver.BuildID = 2.2.12-b150126.1924
 
 # for JDK integration - include version in source zip
 jaxb.jdk.version=@@JAXB_JDK_VERSION@@
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/Options.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/Options.java	Wed Feb 18 19:27:49 2015 -0800
@@ -32,18 +32,18 @@
 import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.io.StringWriter;
-import java.lang.reflect.Array;
-import java.lang.reflect.InvocationTargetException;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.List;
+import java.util.ServiceLoader;
 import java.util.Set;
 
 import com.sun.codemodel.internal.CodeWriter;
@@ -354,9 +354,7 @@
      */
     public List<Plugin> getAllPlugins() {
         if(allPlugins==null) {
-            allPlugins = new ArrayList<Plugin>();
-            ClassLoader ucl = getUserClassLoader(SecureLoader.getClassClassLoader(getClass()));
-            allPlugins.addAll(Arrays.asList(findServices(Plugin.class,ucl)));
+            allPlugins = findServices(Plugin.class);
         }
 
         return allPlugins;
@@ -924,118 +922,44 @@
     /**
      * If a plugin failed to load, report.
      */
-    private static String pluginLoadFailure;
+    private String pluginLoadFailure;
 
     /**
      * Looks for all "META-INF/services/[className]" files and
      * create one instance for each class name found inside this file.
      */
-    private static <T> T[] findServices( Class<T> clazz, ClassLoader classLoader ) {
-        // if true, print debug output
-        final boolean debug = com.sun.tools.internal.xjc.util.Util.getSystemProperty(Options.class,"findServices")!=null;
-
-        // if we are running on Mustang or Dolphin, use ServiceLoader
-        // so that we can take advantage of JSR-277 module system.
+    private <T> List<T> findServices( Class<T> clazz) {
+        final List<T> result = new ArrayList<T>();
+        final boolean debug = getDebugPropertyValue();
         try {
-            Class<?> serviceLoader = Class.forName("java.util.ServiceLoader");
-            if(debug)
-                System.out.println("Using java.util.ServiceLoader");
-            Iterable<T> itr = (Iterable<T>)serviceLoader.getMethod("load",Class.class,ClassLoader.class).invoke(null,clazz,classLoader);
-            List<T> r = new ArrayList<T>();
-            for (T t : itr)
-                r.add(t);
-            return r.toArray((T[])Array.newInstance(clazz,r.size()));
-        } catch (ClassNotFoundException e) {
-            // fall through
-        } catch (IllegalAccessException e) {
-            Error x = new IllegalAccessError();
-            x.initCause(e);
-            throw x;
-        } catch (InvocationTargetException e) {
-            Throwable x = e.getTargetException();
-            if (x instanceof RuntimeException)
-                throw (RuntimeException) x;
-            if (x instanceof Error)
-                throw (Error) x;
-            throw new Error(x);
-        } catch (NoSuchMethodException e) {
-            Error x = new NoSuchMethodError();
-            x.initCause(e);
-            throw x;
-        }
-
-        String serviceId = "META-INF/services/" + clazz.getName();
-
-        // used to avoid creating the same instance twice
-        Set<String> classNames = new HashSet<String>();
-
-        if(debug) {
-            System.out.println("Looking for "+serviceId+" for add-ons");
-        }
-
-        // try to find services in CLASSPATH
-        try {
-            Enumeration<URL> e = classLoader.getResources(serviceId);
-            if(e==null) return (T[])Array.newInstance(clazz,0);
-
-            ArrayList<T> a = new ArrayList<T>();
-            while(e.hasMoreElements()) {
-                URL url = e.nextElement();
-                BufferedReader reader=null;
-
-                if(debug) {
-                    System.out.println("Checking "+url+" for an add-on");
-                }
-
-                try {
-                    reader = new BufferedReader(new InputStreamReader(url.openStream()));
-                    String impl;
-                    while((impl = reader.readLine())!=null ) {
-                        // try to instanciate the object
-                        impl = impl.trim();
-                        if(classNames.add(impl)) {
-                            Class implClass = classLoader.loadClass(impl);
-                            if(!clazz.isAssignableFrom(implClass)) {
-                                pluginLoadFailure = impl+" is not a subclass of "+clazz+". Skipping";
-                                if(debug)
-                                    System.out.println(pluginLoadFailure);
-                                continue;
-                            }
-                            if(debug) {
-                                System.out.println("Attempting to instanciate "+impl);
-                            }
-                            a.add(clazz.cast(implClass.newInstance()));
-                        }
-                    }
-                    reader.close();
-                } catch( Exception ex ) {
-                    // let it go.
-                    StringWriter w = new StringWriter();
-                    ex.printStackTrace(new PrintWriter(w));
-                    pluginLoadFailure = w.toString();
-                    if(debug) {
-                        System.out.println(pluginLoadFailure);
-                    }
-                    if( reader!=null ) {
-                        try {
-                            reader.close();
-                        } catch( IOException ex2 ) {
-                            // ignore
-                        }
-                    }
-                }
-            }
-
-            return a.toArray((T[])Array.newInstance(clazz,a.size()));
+            // TCCL allows user plugins to be loaded even if xjc is in jdk
+            // We have to use our SecureLoader to obtain it because we are trying to avoid SecurityException
+            final ClassLoader tccl = SecureLoader.getContextClassLoader();
+            final ServiceLoader<T> sl = ServiceLoader.load(clazz, tccl);
+            for (T t : sl)
+                result.add(t);
         } catch( Throwable e ) {
             // ignore any error
             StringWriter w = new StringWriter();
             e.printStackTrace(new PrintWriter(w));
             pluginLoadFailure = w.toString();
-            if(debug) {
+            if(debug)
                 System.out.println(pluginLoadFailure);
-            }
-            return (T[])Array.newInstance(clazz,0);
+        }
+        return result;
+    }
+
+    private static boolean getDebugPropertyValue() {
+        final String debugPropertyName = Options.class.getName() + ".findServices";
+        if (System.getSecurityManager() != null) {
+            return AccessController.doPrivileged(new PrivilegedAction<Boolean>() {
+                @Override
+                public Boolean run() {
+                    return Boolean.getBoolean(debugPropertyName);
+                }
+            });
+        } else {
+            return Boolean.getBoolean(debugPropertyName);
         }
     }
 
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/api/impl/s2j/ElementCollectionAdapter.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/api/impl/s2j/ElementCollectionAdapter.java	Wed Feb 18 19:27:49 2015 -0800
@@ -40,7 +40,7 @@
 import com.sun.codemodel.internal.JType;
 import com.sun.codemodel.internal.JVar;
 import com.sun.tools.internal.xjc.model.CElementInfo;
-import static com.sun.tools.internal.xjc.model.Aspect.EXPOSED;
+import static com.sun.tools.internal.xjc.outline.Aspect.EXPOSED;
 import com.sun.tools.internal.xjc.outline.FieldAccessor;
 import com.sun.tools.internal.xjc.outline.FieldOutline;
 
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/api/impl/s2j/ElementSingleAdapter.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/api/impl/s2j/ElementSingleAdapter.java	Wed Feb 18 19:27:49 2015 -0800
@@ -33,7 +33,7 @@
 import com.sun.codemodel.internal.JConditional;
 import com.sun.codemodel.internal.JExpr;
 import com.sun.codemodel.internal.JExpression;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.FieldOutline;
 import com.sun.tools.internal.xjc.outline.FieldAccessor;
 import com.sun.tools.internal.xjc.model.CElementInfo;
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/api/impl/s2j/TypeAndAnnotationImpl.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/api/impl/s2j/TypeAndAnnotationImpl.java	Wed Feb 18 19:27:49 2015 -0800
@@ -36,7 +36,7 @@
 import com.sun.tools.internal.xjc.model.CAdapter;
 import com.sun.tools.internal.xjc.model.TypeUse;
 import com.sun.tools.internal.xjc.model.nav.NType;
-import static com.sun.tools.internal.xjc.model.Aspect.EXPOSED;
+import static com.sun.tools.internal.xjc.outline.Aspect.EXPOSED;
 import com.sun.tools.internal.xjc.outline.Outline;
 import com.sun.xml.internal.bind.v2.runtime.SwaRefAdapterMarker;
 
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/BeanGenerator.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/BeanGenerator.java	Wed Feb 18 19:27:49 2015 -0800
@@ -25,7 +25,7 @@
 
 package com.sun.tools.internal.xjc.generator.bean;
 
-import static com.sun.tools.internal.xjc.model.Aspect.EXPOSED;
+import static com.sun.tools.internal.xjc.outline.Aspect.EXPOSED;
 
 import java.io.Serializable;
 import java.net.URL;
@@ -90,7 +90,7 @@
 import com.sun.tools.internal.xjc.model.CTypeRef;
 import com.sun.tools.internal.xjc.model.Model;
 import com.sun.tools.internal.xjc.model.CClassRef;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.ClassOutline;
 import com.sun.tools.internal.xjc.outline.EnumConstantOutline;
 import com.sun.tools.internal.xjc.outline.EnumOutline;
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/ElementOutlineImpl.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/ElementOutlineImpl.java	Wed Feb 18 19:27:49 2015 -0800
@@ -39,7 +39,7 @@
 import com.sun.codemodel.internal.JMod;
 import com.sun.codemodel.internal.JType;
 import com.sun.tools.internal.xjc.model.CElementInfo;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.ElementOutline;
 
 /**
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/ImplStructureStrategy.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/ImplStructureStrategy.java	Wed Feb 18 19:27:49 2015 -0800
@@ -42,7 +42,7 @@
 import com.sun.codemodel.internal.JVar;
 import com.sun.tools.internal.xjc.generator.annotation.spec.XmlAccessorTypeWriter;
 import com.sun.tools.internal.xjc.model.CClassInfo;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 
 /**
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/ObjectFactoryGeneratorImpl.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/ObjectFactoryGeneratorImpl.java	Wed Feb 18 19:27:49 2015 -0800
@@ -51,7 +51,7 @@
 import com.sun.tools.internal.xjc.model.CPropertyInfo;
 import com.sun.tools.internal.xjc.model.Constructor;
 import com.sun.tools.internal.xjc.model.Model;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.FieldAccessor;
 import com.sun.tools.internal.xjc.outline.FieldOutline;
 import com.sun.xml.internal.bind.v2.TODO;
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/PackageOutlineImpl.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/PackageOutlineImpl.java	Wed Feb 18 19:27:49 2015 -0800
@@ -49,7 +49,7 @@
 import com.sun.tools.internal.xjc.model.CValuePropertyInfo;
 import com.sun.tools.internal.xjc.model.Model;
 import com.sun.tools.internal.xjc.outline.PackageOutline;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 
 /**
  * {@link PackageOutline} enhanced with schema2java specific
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/PrivateObjectFactoryGenerator.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/PrivateObjectFactoryGenerator.java	Wed Feb 18 19:27:49 2015 -0800
@@ -32,7 +32,7 @@
 import com.sun.codemodel.internal.fmt.JPropertyFile;
 import com.sun.tools.internal.xjc.model.CElementInfo;
 import com.sun.tools.internal.xjc.model.Model;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.runtime.JAXBContextFactory;
 
 /**
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/PublicObjectFactoryGenerator.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/PublicObjectFactoryGenerator.java	Wed Feb 18 19:27:49 2015 -0800
@@ -28,7 +28,7 @@
 import com.sun.codemodel.internal.JPackage;
 import com.sun.tools.internal.xjc.model.CElementInfo;
 import com.sun.tools.internal.xjc.model.Model;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 
 /**
  * Generates public ObjectFactory.
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/field/AbstractField.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/field/AbstractField.java	Wed Feb 18 19:27:49 2015 -0800
@@ -63,8 +63,8 @@
 import com.sun.tools.internal.xjc.model.CTypeRef;
 import com.sun.tools.internal.xjc.model.CValuePropertyInfo;
 import com.sun.tools.internal.xjc.model.nav.NClass;
-import com.sun.tools.internal.xjc.model.Aspect;
-import static com.sun.tools.internal.xjc.model.Aspect.IMPLEMENTATION;
+import com.sun.tools.internal.xjc.outline.Aspect;
+import static com.sun.tools.internal.xjc.outline.Aspect.IMPLEMENTATION;
 import com.sun.tools.internal.xjc.outline.ClassOutline;
 import com.sun.tools.internal.xjc.outline.FieldAccessor;
 import com.sun.tools.internal.xjc.outline.FieldOutline;
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/field/ContentListField.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/field/ContentListField.java	Wed Feb 18 19:27:49 2015 -0800
@@ -38,7 +38,7 @@
 import com.sun.tools.internal.xjc.generator.bean.ClassOutlineImpl;
 import com.sun.tools.internal.xjc.generator.bean.MethodWriter;
 import com.sun.tools.internal.xjc.model.CPropertyInfo;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.xml.internal.bind.api.impl.NameConverter;
 import java.io.Serializable;
 
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/field/NoExtendedContentField.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/field/NoExtendedContentField.java	Wed Feb 18 19:27:49 2015 -0800
@@ -40,7 +40,7 @@
 import com.sun.tools.internal.xjc.model.CElement;
 import com.sun.tools.internal.xjc.model.CPropertyInfo;
 import com.sun.tools.internal.xjc.model.CReferencePropertyInfo;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.xml.internal.bind.api.impl.NameConverter;
 import java.io.Serializable;
 import java.util.Set;
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/field/UnboxedField.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/generator/bean/field/UnboxedField.java	Wed Feb 18 19:27:49 2015 -0800
@@ -35,7 +35,7 @@
 import com.sun.tools.internal.xjc.generator.bean.ClassOutlineImpl;
 import com.sun.tools.internal.xjc.generator.bean.MethodWriter;
 import com.sun.tools.internal.xjc.model.CPropertyInfo;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.FieldAccessor;
 import com.sun.xml.internal.bind.api.impl.NameConverter;
 
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/Aspect.java	Tue Feb 17 13:19:23 2015 -0500
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,62 +0,0 @@
-/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This code is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License version 2 only, as
- * published by the Free Software Foundation.  Oracle designates this
- * particular file as subject to the "Classpath" exception as provided
- * by Oracle in the LICENSE file that accompanied this code.
- *
- * This code is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * version 2 for more details (a copy is included in the LICENSE file that
- * accompanied this code).
- *
- * You should have received a copy of the GNU General Public License version
- * 2 along with this work; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
- * or visit www.oracle.com if you need additional information or have any
- * questions.
- */
-
-package com.sun.tools.internal.xjc.model;
-
-import com.sun.tools.internal.xjc.generator.bean.ImplStructureStrategy;
-
-/**
- * Sometimes a single JAXB-generated bean spans across multiple Java classes/interfaces.
- * We call them "aspects of a bean".
- *
- * <p>
- * This is an enumeration of all possible aspects.
- *
- * @author Kohsuke Kawaguchi
- */
-public enum Aspect {
-    /**
-     * The exposed part of the bean.
-     * <p>
-     * This corresponds to the content interface when we are geneting one.
-     * This would be the same as the {@link #IMPLEMENTATION} when we are
-     * just generating beans.
-     *
-     * <p>
-     * This could be an interface, or it could be a class.
-     *
-     * We don't have any other {@link ImplStructureStrategy} at this point,
-     * but generally you can't assume anything about where this could be
-     * or whether that's equal to {@link #IMPLEMENTATION}.
-     */
-    EXPOSED,
-    /**
-     * The part of the bean that holds all the implementations.
-     *
-     * <p>
-     * This is always a class, never an interface.
-     */
-    IMPLEMENTATION
-}
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CAdapter.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CAdapter.java	Wed Feb 18 19:27:49 2015 -0800
@@ -34,6 +34,7 @@
 import com.sun.tools.internal.xjc.model.nav.NClass;
 import com.sun.tools.internal.xjc.model.nav.NType;
 import com.sun.tools.internal.xjc.model.nav.NavigatorImpl;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 import com.sun.xml.internal.bind.v2.model.core.Adapter;
 
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CArrayInfo.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CArrayInfo.java	Wed Feb 18 19:27:49 2015 -0800
@@ -28,6 +28,7 @@
 import javax.xml.namespace.QName;
 
 import com.sun.codemodel.internal.JType;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.xml.internal.bind.v2.model.util.ArrayInfoUtil;
 import com.sun.tools.internal.xjc.model.nav.NClass;
 import com.sun.tools.internal.xjc.model.nav.NType;
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CBuiltinLeafInfo.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CBuiltinLeafInfo.java	Wed Feb 18 19:27:49 2015 -0800
@@ -49,6 +49,7 @@
 import com.sun.codemodel.internal.JExpression;
 import com.sun.codemodel.internal.JType;
 import com.sun.tools.internal.xjc.model.nav.NClass;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.xml.internal.bind.v2.model.annotation.Locatable;
 import com.sun.xml.internal.bind.v2.model.core.BuiltinLeafInfo;
 import com.sun.xml.internal.bind.v2.model.core.Element;
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CClassInfo.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CClassInfo.java	Wed Feb 18 19:27:49 2015 -0800
@@ -45,6 +45,7 @@
 import com.sun.tools.internal.xjc.Language;
 import com.sun.tools.internal.xjc.model.nav.NClass;
 import com.sun.tools.internal.xjc.model.nav.NType;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 import com.sun.tools.internal.xjc.reader.Ring;
 import com.sun.tools.internal.xjc.reader.xmlschema.BGMBuilder;
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CClassRef.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CClassRef.java	Wed Feb 18 19:27:49 2015 -0800
@@ -30,6 +30,7 @@
 import com.sun.codemodel.internal.JClass;
 import com.sun.tools.internal.xjc.model.nav.NClass;
 import com.sun.tools.internal.xjc.model.nav.NType;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 import com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIClass;
 import com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIEnum;
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CElementInfo.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CElementInfo.java	Wed Feb 18 19:27:49 2015 -0800
@@ -43,6 +43,7 @@
 import com.sun.tools.internal.xjc.model.nav.NClass;
 import com.sun.tools.internal.xjc.model.nav.NType;
 import com.sun.tools.internal.xjc.model.nav.NavigatorImpl;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 import com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIInlineBinaryData;
 import com.sun.tools.internal.xjc.reader.xmlschema.bindinfo.BIFactoryMethod;
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CEnumLeafInfo.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CEnumLeafInfo.java	Wed Feb 18 19:27:49 2015 -0800
@@ -34,6 +34,7 @@
 import com.sun.codemodel.internal.JExpression;
 import com.sun.tools.internal.xjc.model.nav.NClass;
 import com.sun.tools.internal.xjc.model.nav.NType;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 import com.sun.xml.internal.bind.v2.model.annotation.Locatable;
 import com.sun.xml.internal.bind.v2.model.core.EnumLeafInfo;
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CReferencePropertyInfo.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CReferencePropertyInfo.java	Wed Feb 18 19:27:49 2015 -0800
@@ -26,7 +26,7 @@
 package com.sun.tools.internal.xjc.model;
 
 import java.util.Collection;
-import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.Set;
 import java.util.Map;
 
@@ -60,7 +60,7 @@
     /**
      * List of referenced elements.
      */
-    private final Set<CElement> elements = new HashSet<CElement>();
+    private final Set<CElement> elements = new LinkedHashSet<CElement>();
 
     private final boolean isMixed;
     private WildcardMode wildcard;
@@ -87,7 +87,7 @@
         // so the Java types of the substitution members need to be taken into account
         // when computing the signature
 
-        final class RefList extends HashSet<CTypeInfo> {
+        final class RefList extends LinkedHashSet<CTypeInfo> {
             RefList() {
                 super(elements.size());
                 addAll(elements);
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CTypeInfo.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CTypeInfo.java	Wed Feb 18 19:27:49 2015 -0800
@@ -29,6 +29,7 @@
 import com.sun.codemodel.internal.JType;
 import com.sun.tools.internal.xjc.model.nav.NClass;
 import com.sun.tools.internal.xjc.model.nav.NType;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 import com.sun.xml.internal.bind.v2.model.core.TypeInfo;
 
@@ -44,7 +45,7 @@
      * Returns the {@link JClass} that represents the class being bound,
      * under the given {@link Outline}.
      *
-     * @see NType#toType(Outline, Aspect)
+     * @see NType#toType(Outline, com.sun.tools.internal.xjc.outline.Aspect)
      */
     JType toType(Outline o, Aspect aspect);
 }
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CWildcardTypeInfo.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/CWildcardTypeInfo.java	Wed Feb 18 19:27:49 2015 -0800
@@ -29,6 +29,7 @@
 import com.sun.tools.internal.xjc.model.nav.NClass;
 import com.sun.tools.internal.xjc.model.nav.NType;
 import com.sun.tools.internal.xjc.model.nav.NavigatorImpl;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 import com.sun.xml.internal.bind.v2.model.core.WildcardTypeInfo;
 
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/nav/EagerNClass.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/nav/EagerNClass.java	Wed Feb 18 19:27:49 2015 -0800
@@ -30,7 +30,7 @@
 import java.util.Set;
 
 import com.sun.codemodel.internal.JClass;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 
 /**
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/nav/EagerNType.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/nav/EagerNType.java	Wed Feb 18 19:27:49 2015 -0800
@@ -28,7 +28,7 @@
 import java.lang.reflect.Type;
 
 import com.sun.codemodel.internal.JType;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 
 /**
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/nav/NClass.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/nav/NClass.java	Wed Feb 18 19:27:49 2015 -0800
@@ -26,7 +26,7 @@
 package com.sun.tools.internal.xjc.model.nav;
 
 import com.sun.codemodel.internal.JClass;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 
 /**
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/nav/NClassByJClass.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/nav/NClassByJClass.java	Wed Feb 18 19:27:49 2015 -0800
@@ -26,7 +26,7 @@
 package com.sun.tools.internal.xjc.model.nav;
 
 import com.sun.codemodel.internal.JClass;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 
 /**
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/nav/NParameterizedType.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/nav/NParameterizedType.java	Wed Feb 18 19:27:49 2015 -0800
@@ -26,7 +26,7 @@
 package com.sun.tools.internal.xjc.model.nav;
 
 import com.sun.codemodel.internal.JClass;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 
 /**
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/nav/NType.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/model/nav/NType.java	Wed Feb 18 19:27:49 2015 -0800
@@ -26,7 +26,7 @@
 package com.sun.tools.internal.xjc.model.nav;
 
 import com.sun.codemodel.internal.JType;
-import com.sun.tools.internal.xjc.model.Aspect;
+import com.sun.tools.internal.xjc.outline.Aspect;
 import com.sun.tools.internal.xjc.outline.Outline;
 
 /**
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/outline/Aspect.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,64 @@
+/*
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package com.sun.tools.internal.xjc.outline;
+
+import com.sun.tools.internal.xjc.generator.bean.ImplStructureStrategy;
+
+/**
+ * Sometimes a single JAXB-generated bean spans across multiple Java classes/interfaces.
+ * We call them "aspects of a bean".
+ *
+ * <p>
+ * This is an enumeration of all possible aspects.
+ *
+ * @author Kohsuke Kawaguchi
+ *
+ * TODO: move this to the model package. We cannot do this before JAXB3 because of old plugins
+ */
+public enum Aspect {
+    /**
+     * The exposed part of the bean.
+     * <p>
+     * This corresponds to the content interface when we are geneting one.
+     * This would be the same as the {@link #IMPLEMENTATION} when we are
+     * just generating beans.
+     *
+     * <p>
+     * This could be an interface, or it could be a class.
+     *
+     * We don't have any other {@link ImplStructureStrategy} at this point,
+     * but generally you can't assume anything about where this could be
+     * or whether that's equal to {@link #IMPLEMENTATION}.
+     */
+    EXPOSED,
+    /**
+     * The part of the bean that holds all the implementations.
+     *
+     * <p>
+     * This is always a class, never an interface.
+     */
+    IMPLEMENTATION
+}
--- a/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/outline/Outline.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.bind/share/classes/com/sun/tools/internal/xjc/outline/Outline.java	Wed Feb 18 19:27:49 2015 -0800
@@ -33,7 +33,6 @@
 import com.sun.codemodel.internal.JPackage;
 import com.sun.codemodel.internal.JType;
 import com.sun.tools.internal.xjc.ErrorReceiver;
-import com.sun.tools.internal.xjc.model.Aspect;
 import com.sun.tools.internal.xjc.model.CClassInfo;
 import com.sun.tools.internal.xjc.model.CClassInfoParent;
 import com.sun.tools.internal.xjc.model.CElementInfo;
--- a/jaxws/src/jdk.xml.ws/share/classes/com/sun/tools/internal/ws/version.properties	Tue Feb 17 13:19:23 2015 -0500
+++ b/jaxws/src/jdk.xml.ws/share/classes/com/sun/tools/internal/ws/version.properties	Wed Feb 18 19:27:49 2015 -0800
@@ -23,7 +23,7 @@
 # questions.
 #
 
-build-id=2.2.11-b141124.1933
-build-version=JAX-WS RI 2.2.11-b141124.1933
+build-id=2.2.11-b150127.1410
+build-version=JAX-WS RI 2.2.11-b150127.1410
 major-version=2.2.11
-svn-revision=312b19a2e0e312b55e1ea6f531bd595955cd581f
+svn-revision=28121d09ed8ac02b76788709ccb4cdb66e03bbfa
--- a/jdk/.hgtags	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/.hgtags	Wed Feb 18 19:27:49 2015 -0800
@@ -291,3 +291,5 @@
 efedac7f44ed41cea2b1038138047271f55aacba jdk9-b46
 b641c14730ac05d9ec8b4f66e6fca3dc21adb403 jdk9-b47
 ebb2eb7f1aec78eb6d8cc4c96f018afa11093cde jdk9-b48
+541a8cef4e0d54c3e4b52a98c6af3c31e2096669 jdk9-b49
+f6b8edd397ee463be208fee27517c99101293267 jdk9-b50
--- a/jdk/make/Tools.gmk	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/Tools.gmk	Wed Feb 18 19:27:49 2015 -0800
@@ -147,6 +147,15 @@
     EXCLUDES := jdk/internal/jimage/concurrent, \
     BIN := $(BUILDTOOLS_OUTPUTDIR)/interim_jimage_classes))
 
+# Because of the explicit INCLUDES in the compilation setup above, the service provider
+# file will not be copied unless META-INF/services would also be added to the INCLUDES.
+# Adding META-INF/services would include all files in that directory when only the one
+# is needed, which is why this explicit copy is defined instead.
+$(eval $(call SetupCopyFiles,COPY_JIMAGE_SERVICE_PROVIDER, \
+    SRC := $(JDK_TOPDIR)/src/java.base/share/classes, \
+    DEST := $(BUILDTOOLS_OUTPUTDIR)/interim_jimage_classes, \
+    FILES := META-INF/services/java.nio.file.spi.FileSystemProvider))
+
 ##########################################################################################
 
 # Tools needed on solaris because OBJCOPY is broken.
@@ -173,7 +182,7 @@
       PROGRAM := fix_empty_sec_hdr_flags))
 endif
 
-$(BUILD_TOOLS_JDK): $(BUILD_INTERIM_JIMAGE)
+$(BUILD_TOOLS_JDK): $(BUILD_INTERIM_JIMAGE) $(COPY_JIMAGE_SERVICE_PROVIDER)
 
 java-tools: $(BUILD_TOOLS_JDK)
 
--- a/jdk/make/data/tzdata/VERSION	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/data/tzdata/VERSION	Wed Feb 18 19:27:49 2015 -0800
@@ -21,4 +21,4 @@
 # or visit www.oracle.com if you need additional information or have any
 # questions.
 #
-tzdata2014j
+tzdata2015a
--- a/jdk/make/data/tzdata/antarctica	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/data/tzdata/antarctica	Wed Feb 18 19:27:49 2015 -0800
@@ -70,8 +70,8 @@
 Rule	ChileAQ	2010	only	-	Apr	Sun>=1	3:00u	0	-
 Rule	ChileAQ	2011	only	-	May	Sun>=2	3:00u	0	-
 Rule	ChileAQ	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
-Rule	ChileAQ	2012	max	-	Apr	Sun>=23	3:00u	0	-
-Rule	ChileAQ	2012	max	-	Sep	Sun>=2	4:00u	1:00	S
+Rule	ChileAQ	2012	2015	-	Apr	Sun>=23	3:00u	0	-
+Rule	ChileAQ	2012	2014	-	Sep	Sun>=2	4:00u	1:00	S
 
 # Argentina - year-round bases
 # Belgrano II, Confin Coast, -770227-0343737, since 1972-02-05
@@ -377,9 +377,10 @@
 #
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone Antarctica/Palmer	0	-	zzz	1965
-			-4:00	ArgAQ	AR%sT	1969 Oct 5
+			-4:00	ArgAQ	AR%sT	1969 Oct  5
 			-3:00	ArgAQ	AR%sT	1982 May
-			-4:00	ChileAQ	CL%sT
+			-4:00	ChileAQ	CL%sT	2015 Apr 26 3:00u
+			-3:00	-	CLT
 #
 #
 # McMurdo Station, Ross Island, since 1955-12
--- a/jdk/make/data/tzdata/asia	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/data/tzdata/asia	Wed Feb 18 19:27:49 2015 -0800
@@ -168,10 +168,7 @@
 			4:00	Azer	AZ%sT
 
 # Bahrain
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Bahrain	3:22:20 -	LMT	1920     # Manamah
-			4:00	-	GST	1972 Jun
-			3:00	-	AST
+# See Asia/Qatar.
 
 # Bangladesh
 # From Alexander Krivenyshev (2009-05-13):
@@ -1754,9 +1751,7 @@
 ###############################################################################
 
 # Kuwait
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Kuwait	3:11:56 -	LMT	1950
-			3:00	-	AST
+# See Asia/Riyadh.
 
 # Laos
 # See Asia/Bangkok.
@@ -1977,12 +1972,7 @@
 			5:45	-	NPT	# Nepal Time
 
 # Oman
-
-# Milne says 3:54:24 was the meridian of the Muscat Tidal Observatory.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Muscat	3:54:24 -	LMT	1920
-			4:00	-	GST
+# See Asia/Dubai.
 
 # Pakistan
 
@@ -2476,6 +2466,7 @@
 Zone	Asia/Qatar	3:26:08 -	LMT	1920     # Al Dawhah / Doha
 			4:00	-	GST	1972 Jun
 			3:00	-	AST
+Link Asia/Qatar Asia/Bahrain
 
 # Saudi Arabia
 #
@@ -2502,6 +2493,8 @@
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Asia/Riyadh	3:06:52 -	LMT	1947 Mar 14
 			3:00	-	AST
+Link Asia/Riyadh Asia/Aden	# Yemen
+Link Asia/Riyadh Asia/Kuwait
 
 # Singapore
 # taken from Mok Ly Yng (2003-10-30)
@@ -2790,6 +2783,7 @@
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
 Zone	Asia/Dubai	3:41:12 -	LMT	1920
 			4:00	-	GST
+Link Asia/Dubai Asia/Muscat	# Oman
 
 # Uzbekistan
 # Byalokoz 1919 says Uzbekistan was 4:27:53.
@@ -2874,10 +2868,4 @@
 			7:00	-	ICT
 
 # Yemen
-
-# Milne says 2:59:54 was the meridian of the saluting battery at Aden,
-# and that Yemen was at 1:55:56, the meridian of the Hagia Sophia.
-
-# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone	Asia/Aden	2:59:54	-	LMT	1950
-			3:00	-	AST
+# See Asia/Riyadh.
--- a/jdk/make/data/tzdata/backward	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/data/tzdata/backward	Wed Feb 18 19:27:49 2015 -0800
@@ -28,7 +28,7 @@
 # and their old names.  Many names changed in late 1993.
 
 # Link	TARGET			LINK-NAME
-Link	Africa/Asmara		Africa/Asmera
+Link	Africa/Nairobi		Africa/Asmera
 Link	Africa/Abidjan		Africa/Timbuktu
 Link	America/Argentina/Catamarca	America/Argentina/ComodRivadavia
 Link	America/Adak		America/Atka
--- a/jdk/make/data/tzdata/europe	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/data/tzdata/europe	Wed Feb 18 19:27:49 2015 -0800
@@ -1430,35 +1430,32 @@
 # might be a reference to the Julian calendar as opposed to Gregorian, or it
 # might mean something else (???).
 #
-# From Paul Eggert (2006-03-22):
-# The Iceland Almanak, Shanks & Pottenger, and Whitman disagree on many points.
-# We go with the Almanak, except for one claim from Shanks & Pottenger, namely
-# that Reykavik was 21W57 from 1837 to 1908, local mean time before that.
+# From Paul Eggert (2014-11-22):
+# The information below is taken from the 1988 Almanak; see
+# http://www.almanak.hi.is/klukkan.html
 #
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
-Rule	Iceland	1917	1918	-	Feb	19	23:00	1:00	S
+Rule	Iceland	1917	1919	-	Feb	19	23:00	1:00	S
 Rule	Iceland	1917	only	-	Oct	21	 1:00	0	-
-Rule	Iceland	1918	only	-	Nov	16	 1:00	0	-
+Rule	Iceland	1918	1919	-	Nov	16	 1:00	0	-
+Rule	Iceland	1921	only	-	Mar	19	23:00	1:00	S
+Rule	Iceland	1921	only	-	Jun	23	 1:00	0	-
 Rule	Iceland	1939	only	-	Apr	29	23:00	1:00	S
-Rule	Iceland	1939	only	-	Nov	29	 2:00	0	-
+Rule	Iceland	1939	only	-	Oct	29	 2:00	0	-
 Rule	Iceland	1940	only	-	Feb	25	 2:00	1:00	S
-Rule	Iceland	1940	only	-	Nov	 3	 2:00	0	-
-Rule	Iceland	1941	only	-	Mar	 2	 1:00s	1:00	S
-Rule	Iceland	1941	only	-	Nov	 2	 1:00s	0	-
-Rule	Iceland	1942	only	-	Mar	 8	 1:00s	1:00	S
-Rule	Iceland	1942	only	-	Oct	25	 1:00s	0	-
+Rule	Iceland	1940	1941	-	Nov	Sun>=2	 1:00s	0	-
+Rule	Iceland	1941	1942	-	Mar	Sun>=2	 1:00s	1:00	S
 # 1943-1946 - first Sunday in March until first Sunday in winter
 Rule	Iceland	1943	1946	-	Mar	Sun>=1	 1:00s	1:00	S
-Rule	Iceland	1943	1948	-	Oct	Sun>=22	 1:00s	0	-
+Rule	Iceland	1942	1948	-	Oct	Sun>=22	 1:00s	0	-
 # 1947-1967 - first Sunday in April until first Sunday in winter
 Rule	Iceland	1947	1967	-	Apr	Sun>=1	 1:00s	1:00	S
-# 1949 Oct transition delayed by 1 week
+# 1949 and 1967 Oct transitions delayed by 1 week
 Rule	Iceland	1949	only	-	Oct	30	 1:00s	0	-
 Rule	Iceland	1950	1966	-	Oct	Sun>=22	 1:00s	0	-
 Rule	Iceland	1967	only	-	Oct	29	 1:00s	0	-
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
-Zone Atlantic/Reykjavik	-1:27:24 -	LMT	1837
-			-1:27:48 -	RMT	1908 # Reykjavik Mean Time?
+Zone Atlantic/Reykjavik	-1:28	-	LMT	1908
 			-1:00	Iceland	IS%sT	1968 Apr  7  1:00s
 			 0:00	-	GMT
 
--- a/jdk/make/data/tzdata/leapseconds	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/data/tzdata/leapseconds	Wed Feb 18 19:27:49 2015 -0800
@@ -77,3 +77,7 @@
 Leap	2005	Dec	31	23:59:60	+	S
 Leap	2008	Dec	31	23:59:60	+	S
 Leap	2012	Jun	30	23:59:60	+	S
+Leap	2015	Jun	30	23:59:60	+	S
+
+#	Updated through IERS Bulletin C49
+#	File expires on:  28 December 2015
--- a/jdk/make/data/tzdata/northamerica	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/data/tzdata/northamerica	Wed Feb 18 19:27:49 2015 -0800
@@ -147,7 +147,7 @@
 Rule	US	1918	1919	-	Oct	lastSun	2:00	0	S
 Rule	US	1942	only	-	Feb	9	2:00	1:00	W # War
 Rule	US	1945	only	-	Aug	14	23:00u	1:00	P # Peace
-Rule	US	1945	only	-	Sep	30	2:00	0	S
+Rule	US	1945	only	-	Sep	lastSun	2:00	0	S
 Rule	US	1967	2006	-	Oct	lastSun	2:00	0	S
 Rule	US	1967	1973	-	Apr	lastSun	2:00	1:00	D
 Rule	US	1974	only	-	Jan	6	2:00	1:00	D
@@ -2147,11 +2147,11 @@
 
 # Mexico
 
-# From Paul Eggert (2001-03-05):
+# From Paul Eggert (2014-12-07):
 # The Investigation and Analysis Service of the
 # Mexican Library of Congress (MLoC) has published a
 # history of Mexican local time (in Spanish)
-# http://www.cddhcu.gob.mx/bibliot/publica/inveyana/polisoc/horver/
+# http://www.diputados.gob.mx/bibliot/publica/inveyana/polisoc/horver/index.htm
 #
 # Here are the discrepancies between Shanks & Pottenger (S&P) and the MLoC.
 # (In all cases we go with the MLoC.)
@@ -2320,6 +2320,24 @@
 # efecto desde las dos horas del segundo domingo de marzo y concluirá a
 # las dos horas del primer domingo de noviembre.
 
+# From Steffen Thorsen (2014-12-08), translated by Gwillim Law:
+# The Mexican state of Quintana Roo will likely change to EST in 2015.
+#
+# http://www.unioncancun.mx/articulo/2014/12/04/medio-ambiente/congreso-aprueba-una-hora-mas-de-sol-en-qroo
+# "With this change, the time conflict that has existed between the municipios
+# of Quintana Roo and the municipio of Felipe Carrillo Puerto may come to an
+# end. The latter declared itself in rebellion 15 years ago when a time change
+# was initiated in Mexico, and since then it has refused to change its time
+# zone along with the rest of the country."
+#
+# From Steffen Thorsen (2015-01-14), translated by Gwillim Law:
+# http://sipse.com/novedades/confirman-aplicacion-de-nueva-zona-horaria-para-quintana-roo-132331.html
+# "...the new time zone will come into effect at two o'clock on the first Sunday
+# of February, when we will have to advance the clock one hour from its current
+# time..."
+#
+# Also, the new zone will not use DST.
+
 # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
 Rule	Mexico	1939	only	-	Feb	5	0:00	1:00	D
 Rule	Mexico	1939	only	-	Jun	25	0:00	0	S
@@ -2340,7 +2358,8 @@
 Zone America/Cancun	-5:47:04 -	LMT	1922 Jan  1  0:12:56
 			-6:00	-	CST	1981 Dec 23
 			-5:00	Mexico	E%sT	1998 Aug  2  2:00
-			-6:00	Mexico	C%sT
+			-6:00	Mexico	C%sT	2015 Feb  1  2:00
+			-5:00	-	EST
 # Campeche, Yucatán; represented by Mérida
 Zone America/Merida	-5:58:28 -	LMT	1922 Jan  1  0:01:32
 			-6:00	-	CST	1981 Dec 23
--- a/jdk/make/data/tzdata/southamerica	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/data/tzdata/southamerica	Wed Feb 18 19:27:49 2015 -0800
@@ -1229,6 +1229,11 @@
 # DST Start: first Saturday of September 2014 (Sun 07 Sep 2014 04:00 UTC)
 # http://www.diariooficial.interior.gob.cl//media/2014/02/19/do-20140219.pdf
 
+# From Juan Correa (2015-01-28):
+# ... today the Ministry of Energy announced that Chile will drop DST, will keep
+# "summer time" (UTC -3 / UTC -5) all year round....
+# http://www.minenergia.cl/ministerio/noticias/generales/ministerio-de-energia-anuncia.html
+
 # NOTE: ChileAQ rules for Antarctic bases are stored separately in the
 # 'antarctica' file.
 
@@ -1270,8 +1275,8 @@
 Rule	Chile	2010	only	-	Apr	Sun>=1	3:00u	0	-
 Rule	Chile	2011	only	-	May	Sun>=2	3:00u	0	-
 Rule	Chile	2011	only	-	Aug	Sun>=16	4:00u	1:00	S
-Rule	Chile	2012	max	-	Apr	Sun>=23	3:00u	0	-
-Rule	Chile	2012	max	-	Sep	Sun>=2	4:00u	1:00	S
+Rule	Chile	2012	2015	-	Apr	Sun>=23	3:00u	0	-
+Rule	Chile	2012	2014	-	Sep	Sun>=2	4:00u	1:00	S
 # IATA SSIM anomalies: (1992-02) says 1992-03-14;
 # (1996-09) says 1998-03-08.  Ignore these.
 # Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
@@ -1282,11 +1287,13 @@
 			-4:00	-	CLT	1919 Jul  1 # Chile Time
 			-4:42:46 -	SMT	1927 Sep  1 # Santiago Mean Time
 			-5:00	Chile	CL%sT	1947 May 22 # Chile Time
-			-4:00	Chile	CL%sT
+			-4:00	Chile	CL%sT	2015 Apr 26  3:00u
+			-3:00	-	CLT
 Zone Pacific/Easter	-7:17:44 -	LMT	1890
 			-7:17:28 -	EMT	1932 Sep    # Easter Mean Time
-			-7:00	Chile	EAS%sT	1982 Mar 13 21:00 # Easter Time
-			-6:00	Chile	EAS%sT
+			-7:00	Chile	EAS%sT	1982 Mar 13 3:00u # Easter Time
+			-6:00	Chile	EAS%sT	2015 Apr 26 3:00u
+			-5:00	-	EAST
 #
 # Salas y Gómez Island is uninhabited.
 # Other Chilean locations, including Juan Fernández Is, Desventuradas Is,
--- a/jdk/make/data/tzdata/zone.tab	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/data/tzdata/zone.tab	Wed Feb 18 19:27:49 2015 -0800
@@ -297,7 +297,7 @@
 MV	+0410+07330	Indian/Maldives
 MW	-1547+03500	Africa/Blantyre
 MX	+1924-09909	America/Mexico_City	Central Time - most locations
-MX	+2105-08646	America/Cancun	Central Time - Quintana Roo
+MX	+2105-08646	America/Cancun	Eastern Standard Time - Quintana Roo
 MX	+2058-08937	America/Merida	Central Time - Campeche, Yucatan
 MX	+2540-10019	America/Monterrey	Mexican Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas away from US border
 MX	+2550-09730	America/Matamoros	US Central Time - Coahuila, Durango, Nuevo Leon, Tamaulipas near US border
--- a/jdk/make/launcher/Launcher-jdk.runtime.gmk	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/launcher/Launcher-jdk.runtime.gmk	Wed Feb 18 19:27:49 2015 -0800
@@ -66,19 +66,6 @@
 ifeq ($(OPENJDK_TARGET_OS), solaris)
   UNPACKEXE_LANG := C++
 endif
-UNPACKEXE_DEBUG_SYMBOLS := true
-# On windows, unpack200 is linked completely differently to all other
-# executables, using the compiler with the compiler arguments.
-# It's also linked incrementally, producing a .ilk file that needs to
-# be kept away.
-ifeq ($(OPENJDK_TARGET_OS), windows)
-  BUILD_UNPACKEXE_LDEXE := $(CC)
-  EXE_OUT_OPTION_save := $(EXE_OUT_OPTION)
-  EXE_OUT_OPTION := -Fe
-  # With the current way unpack200 is built, debug symbols aren't supported
-  # anyway.
-  UNPACKEXE_DEBUG_SYMBOLS := false
-endif
 
 # The linker on older SuSE distros (e.g. on SLES 10) complains with:
 # "Invalid version tag `SUNWprivate_1.1'. Only anonymous version tag is allowed in executable."
@@ -93,49 +80,36 @@
     SRC := $(UNPACKEXE_SRC), \
     LANG := $(UNPACKEXE_LANG), \
     OPTIMIZATION := LOW, \
-    CFLAGS := $(UNPACKEXE_CFLAGS) $(CXXFLAGS_JDKEXE) \
-        -DFULL, \
+    CFLAGS := $(UNPACKEXE_CFLAGS) $(CXXFLAGS_JDKEXE) -DFULL, \
     CFLAGS_release := -DPRODUCT, \
     CFLAGS_linux := -fPIC, \
     CFLAGS_solaris := -KPIC, \
     CFLAGS_macosx := -fPIC, \
     MAPFILE := $(UNPACK_MAPFILE),\
-    LDFLAGS := $(UNPACKEXE_ZIPOBJS), \
-    LDFLAGS_windows := $(CXXFLAGS_JDKEXE), \
-    LDFLAGS_unix := $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
+    LDFLAGS := $(UNPACKEXE_ZIPOBJS) \
+        $(LDFLAGS_JDKEXE) $(LDFLAGS_CXX_JDK) \
         $(call SET_SHARED_LIBRARY_NAME,$(LIBRARY_PREFIX)unpack$(SHARED_LIBRARY_SUFFIX)) \
         $(call SET_SHARED_LIBRARY_ORIGIN), \
     LDFLAGS_linux := -lc, \
     LDFLAGS_solaris := $(UNPACKEXE_LDFLAGS_solaris) -lc, \
     LDFLAGS_SUFFIX := $(LIBCXX), \
     OBJECT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/unpackexe$(OUTPUT_SUBDIR), \
-    OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/native/$(MODULE)/unpackexe$(OUTPUT_SUBDIR), \
+    OUTPUT_DIR := $(SUPPORT_OUTPUTDIR)/modules_cmds/$(MODULE), \
     PROGRAM := unpack200, \
     VERSIONINFO_RESOURCE := $(GLOBAL_VERSION_INFO_RESOURCE), \
     RC_FLAGS := $(RC_FLAGS) \
         -D "JDK_FNAME=unpack200.exe" \
         -D "JDK_INTERNAL_NAME=unpack200" \
         -D "JDK_FTYPE=0x1L", \
-    DEBUG_SYMBOLS := $(UNPACKEXE_DEBUG_SYMBOLS), \
+    DEBUG_SYMBOLS := true, \
     MANIFEST := $(JDK_TOPDIR)/src/jdk.runtime/windows/native/unpack200/unpack200_proto.exe.manifest))
 
-ifeq ($(OPENJDK_TARGET_OS), windows)
-  EXE_OUT_OPTION := $(EXE_OUT_OPTION_save)
-endif
-
 ifneq ($(USE_EXTERNAL_LIBZ), true)
 
   $(BUILD_UNPACKEXE): $(UNPACKEXE_ZIPOBJS)
 
 endif
 
-# Build into object dir and copy executable afterwards to avoid .ilk file in
-# image. The real fix would be clean up linking of unpack200 using
-# -link -incremental:no
-# like all other launchers.
-$(SUPPORT_OUTPUTDIR)/modules_cmds/$(MODULE)/unpack200$(EXE_SUFFIX): $(BUILD_UNPACKEXE)
-	$(call install-file)
-
-TARGETS += $(SUPPORT_OUTPUTDIR)/modules_cmds/$(MODULE)/unpack200$(EXE_SUFFIX)
+TARGETS += $(BUILD_UNPACKEXE)
 
 ################################################################################
--- a/jdk/make/src/classes/build/tools/module/boot.modules	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/src/classes/build/tools/module/boot.modules	Wed Feb 18 19:27:49 2015 -0800
@@ -1,7 +1,5 @@
 java.base
 java.desktop
-java.activation
-java.annotations.common
 java.compiler
 java.corba
 java.instrument
@@ -11,7 +9,6 @@
 java.prefs
 java.rmi
 java.scripting
-java.security.acl
 java.security.jgss
 java.security.sasl
 java.smartcardio
@@ -19,9 +16,7 @@
 java.sql.rowset
 java.transaction
 java.xml
-java.xml.bind
 java.xml.crypto
-java.xml.ws
 jdk.charsets
 jdk.deploy
 jdk.deploy.osx
--- a/jdk/make/src/classes/build/tools/module/ext.modules	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/make/src/classes/build/tools/module/ext.modules	Wed Feb 18 19:27:49 2015 -0800
@@ -1,3 +1,7 @@
+java.activation
+java.annotations.common
+java.xml.bind
+java.xml.ws
 jdk.crypto.ec
 jdk.crypto.mscapi
 jdk.crypto.pkcs11
--- a/jdk/src/java.base/macosx/native/libjli/java_md_macosx.c	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/macosx/native/libjli/java_md_macosx.c	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
@@ -1059,6 +1059,7 @@
 void PostJVMInit(JNIEnv *env, jstring mainClass, JavaVM *vm) {
     jvmInstance = vm;
     SetMainClassForAWT(env, mainClass);
+    CHECK_EXCEPTION_RETURN();
     ShowSplashScreen();
 }
 
--- a/jdk/src/java.base/share/classes/com/sun/crypto/provider/GHASH.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/com/sun/crypto/provider/GHASH.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015 Red Hat, Inc.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,9 +29,7 @@
 
 package com.sun.crypto.provider;
 
-import java.util.Arrays;
-import java.security.*;
-import static com.sun.crypto.provider.AESConstants.AES_BLOCK_SIZE;
+import java.security.ProviderException;
 
 /**
  * This class represents the GHASH function defined in NIST 800-38D
@@ -44,62 +43,90 @@
  */
 final class GHASH {
 
-    private static final byte P128 = (byte) 0xe1; //reduction polynomial
-
-    private static boolean getBit(byte[] b, int pos) {
-        int p = pos / 8;
-        pos %= 8;
-        int i = (b[p] >>> (7 - pos)) & 1;
-        return i != 0;
+    private static long getLong(byte[] buffer, int offset) {
+        long result = 0;
+        int end = offset + 8;
+        for (int i = offset; i < end; ++i) {
+            result = (result << 8) + (buffer[i] & 0xFF);
+        }
+        return result;
     }
 
-    private static void shift(byte[] b) {
-        byte temp, temp2;
-        temp2 = 0;
-        for (int i = 0; i < b.length; i++) {
-            temp = (byte) ((b[i] & 0x01) << 7);
-            b[i] = (byte) ((b[i] & 0xff) >>> 1);
-            b[i] = (byte) (b[i] | temp2);
-            temp2 = temp;
+    private static void putLong(byte[] buffer, int offset, long value) {
+        int end = offset + 8;
+        for (int i = end - 1; i >= offset; --i) {
+            buffer[i] = (byte) value;
+            value >>= 8;
         }
     }
 
-    // Given block X and Y, returns the muliplication of X * Y
-    private static byte[] blockMult(byte[] x, byte[] y) {
-        if (x.length != AES_BLOCK_SIZE || y.length != AES_BLOCK_SIZE) {
-            throw new RuntimeException("illegal input sizes");
+    private static final int AES_BLOCK_SIZE = 16;
+
+    // Multiplies state0, state1 by V0, V1.
+    private void blockMult(long V0, long V1) {
+        long Z0 = 0;
+        long Z1 = 0;
+        long X;
+
+        // Separate loops for processing state0 and state1.
+        X = state0;
+        for (int i = 0; i < 64; i++) {
+            // Zi+1 = Zi if bit i of x is 0
+            long mask = X >> 63;
+            Z0 ^= V0 & mask;
+            Z1 ^= V1 & mask;
+
+            // Save mask for conditional reduction below.
+            mask = (V1 << 63) >> 63;
+
+            // V = rightshift(V)
+            long carry = V0 & 1;
+            V0 = V0 >>> 1;
+            V1 = (V1 >>> 1) | (carry << 63);
+
+            // Conditional reduction modulo P128.
+            V0 ^= 0xe100000000000000L & mask;
+            X <<= 1;
         }
-        byte[] z = new byte[AES_BLOCK_SIZE];
-        byte[] v = y.clone();
-        // calculate Z1-Z127 and V1-V127
-        for (int i = 0; i < 127; i++) {
+
+        X = state1;
+        for (int i = 64; i < 127; i++) {
             // Zi+1 = Zi if bit i of x is 0
-            if (getBit(x, i)) {
-                for (int n = 0; n < z.length; n++) {
-                    z[n] ^= v[n];
-                }
-            }
-            boolean lastBitOfV = getBit(v, 127);
-            shift(v);
-            if (lastBitOfV) v[0] ^= P128;
+            long mask = X >> 63;
+            Z0 ^= V0 & mask;
+            Z1 ^= V1 & mask;
+
+            // Save mask for conditional reduction below.
+            mask = (V1 << 63) >> 63;
+
+            // V = rightshift(V)
+            long carry = V0 & 1;
+            V0 = V0 >>> 1;
+            V1 = (V1 >>> 1) | (carry << 63);
+
+            // Conditional reduction.
+            V0 ^= 0xe100000000000000L & mask;
+            X <<= 1;
         }
+
         // calculate Z128
-        if (getBit(x, 127)) {
-            for (int n = 0; n < z.length; n++) {
-                z[n] ^= v[n];
-            }
-        }
-        return z;
+        long mask = X >> 63;
+        Z0 ^= V0 & mask;
+        Z1 ^= V1 & mask;
+
+        // Save result.
+        state0 = Z0;
+        state1 = Z1;
     }
 
     // hash subkey H; should not change after the object has been constructed
-    private final byte[] subkeyH;
+    private final long subkeyH0, subkeyH1;
 
     // buffer for storing hash
-    private byte[] state;
+    private long state0, state1;
 
     // variables for save/restore calls
-    private byte[] stateSave = null;
+    private long stateSave0, stateSave1;
 
     /**
      * Initializes the cipher in the specified mode with the given key
@@ -114,8 +141,8 @@
         if ((subkeyH == null) || subkeyH.length != AES_BLOCK_SIZE) {
             throw new ProviderException("Internal error");
         }
-        this.subkeyH = subkeyH;
-        this.state = new byte[AES_BLOCK_SIZE];
+        this.subkeyH0 = getLong(subkeyH, 0);
+        this.subkeyH1 = getLong(subkeyH, 8);
     }
 
     /**
@@ -124,31 +151,33 @@
      * this object for different data w/ the same H.
      */
     void reset() {
-        Arrays.fill(state, (byte) 0);
+        state0 = 0;
+        state1 = 0;
     }
 
     /**
      * Save the current snapshot of this GHASH object.
      */
     void save() {
-        stateSave = state.clone();
+        stateSave0 = state0;
+        stateSave1 = state1;
     }
 
     /**
      * Restores this object using the saved snapshot.
      */
     void restore() {
-        state = stateSave;
+        state0 = stateSave0;
+        state1 = stateSave1;
     }
 
     private void processBlock(byte[] data, int ofs) {
         if (data.length - ofs < AES_BLOCK_SIZE) {
             throw new RuntimeException("need complete block");
         }
-        for (int n = 0; n < state.length; n++) {
-            state[n] ^= data[ofs + n];
-        }
-        state = blockMult(state, subkeyH);
+        state0 ^= getLong(data, ofs);
+        state1 ^= getLong(data, ofs + 8);
+        blockMult(subkeyH0, subkeyH1);
     }
 
     void update(byte[] in) {
@@ -169,10 +198,10 @@
     }
 
     byte[] digest() {
-        try {
-            return state.clone();
-        } finally {
-            reset();
-        }
+        byte[] result = new byte[AES_BLOCK_SIZE];
+        putLong(result, 0, state0);
+        putLong(result, 8, state1);
+        reset();
+        return result;
     }
 }
--- a/jdk/src/java.base/share/classes/java/io/PushbackInputStream.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/io/PushbackInputStream.java	Wed Feb 18 19:27:49 2015 -0800
@@ -28,9 +28,10 @@
 /**
  * A <code>PushbackInputStream</code> adds
  * functionality to another input stream, namely
- * the  ability to "push back" or "unread"
- * one byte. This is useful in situations where
- * it is  convenient for a fragment of code
+ * the  ability to "push back" or "unread" bytes,
+ * by storing pushed-back bytes in an internal buffer.
+ * This is useful in situations where
+ * it is convenient for a fragment of code
  * to read an indefinite number of data bytes
  * that  are delimited by a particular byte
  * value; after reading the terminating byte,
@@ -77,11 +78,9 @@
     /**
      * Creates a <code>PushbackInputStream</code>
      * with a pushback buffer of the specified <code>size</code>,
-     * and saves its  argument, the input stream
+     * and saves its argument, the input stream
      * <code>in</code>, for later use. Initially,
-     * there is no pushed-back byte  (the field
-     * <code>pushBack</code> is initialized to
-     * <code>-1</code>).
+     * the pushback buffer is empty.
      *
      * @param  in    the input stream from which bytes will be read.
      * @param  size  the size of the pushback buffer.
@@ -99,11 +98,9 @@
 
     /**
      * Creates a <code>PushbackInputStream</code>
-     * and saves its  argument, the input stream
+     * with a 1-byte pushback buffer, and saves its argument, the input stream
      * <code>in</code>, for later use. Initially,
-     * there is no pushed-back byte  (the field
-     * <code>pushBack</code> is initialized to
-     * <code>-1</code>).
+     * the pushback buffer is empty.
      *
      * @param   in   the input stream from which bytes will be read.
      */
--- a/jdk/src/java.base/share/classes/java/lang/Number.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/lang/Number.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1994, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -37,7 +37,7 @@
  *
  * For platform classes, the conversion is often analogous to a
  * narrowing primitive conversion or a widening primitive conversion
- * as defining in <cite>The Java&trade; Language Specification</cite>
+ * as defined in <cite>The Java&trade; Language Specification</cite>
  * for converting between primitive types.  Therefore, conversions may
  * lose information about the overall magnitude of a numeric value, may
  * lose precision, and may even return a result of a different sign
@@ -54,8 +54,7 @@
  */
 public abstract class Number implements java.io.Serializable {
     /**
-     * Returns the value of the specified number as an {@code int},
-     * which may involve rounding or truncation.
+     * Returns the value of the specified number as an {@code int}.
      *
      * @return  the numeric value represented by this object after conversion
      *          to type {@code int}.
@@ -63,8 +62,7 @@
     public abstract int intValue();
 
     /**
-     * Returns the value of the specified number as a {@code long},
-     * which may involve rounding or truncation.
+     * Returns the value of the specified number as a {@code long}.
      *
      * @return  the numeric value represented by this object after conversion
      *          to type {@code long}.
@@ -72,8 +70,7 @@
     public abstract long longValue();
 
     /**
-     * Returns the value of the specified number as a {@code float},
-     * which may involve rounding.
+     * Returns the value of the specified number as a {@code float}.
      *
      * @return  the numeric value represented by this object after conversion
      *          to type {@code float}.
@@ -81,8 +78,7 @@
     public abstract float floatValue();
 
     /**
-     * Returns the value of the specified number as a {@code double},
-     * which may involve rounding.
+     * Returns the value of the specified number as a {@code double}.
      *
      * @return  the numeric value represented by this object after conversion
      *          to type {@code double}.
@@ -90,8 +86,7 @@
     public abstract double doubleValue();
 
     /**
-     * Returns the value of the specified number as a {@code byte},
-     * which may involve rounding or truncation.
+     * Returns the value of the specified number as a {@code byte}.
      *
      * <p>This implementation returns the result of {@link #intValue} cast
      * to a {@code byte}.
@@ -105,8 +100,7 @@
     }
 
     /**
-     * Returns the value of the specified number as a {@code short},
-     * which may involve rounding or truncation.
+     * Returns the value of the specified number as a {@code short}.
      *
      * <p>This implementation returns the result of {@link #intValue} cast
      * to a {@code short}.
--- a/jdk/src/java.base/share/classes/java/lang/ProcessBuilder.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/lang/ProcessBuilder.java	Wed Feb 18 19:27:49 2015 -0800
@@ -964,6 +964,9 @@
      * of the exception is system-dependent, but it will always be a
      * subclass of {@link IOException}.
      *
+     * <p>If the operating system does not support the creation of
+     * processes, an {@link UnsupportedOperationException} will be thrown.
+     *
      * <p>Subsequent modifications to this process builder will not
      * affect the returned {@link Process}.
      *
@@ -998,6 +1001,9 @@
      *
      *         </ul>
      *
+     * @throws  UnsupportedOperationException
+     *          If the operating system does not support the creation of processes.
+     *
      * @throws IOException if an I/O error occurs
      *
      * @see Runtime#exec(String[], String[], java.io.File)
--- a/jdk/src/java.base/share/classes/java/lang/Runtime.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/lang/Runtime.java	Wed Feb 18 19:27:49 2015 -0800
@@ -576,6 +576,9 @@
      * of the exception is system-dependent, but it will always be a
      * subclass of {@link IOException}.
      *
+     * <p>If the operating system does not support the creation of
+     * processes, an {@link UnsupportedOperationException} will be thrown.
+     *
      *
      * @param   cmdarray  array containing the command to call and
      *                    its arguments.
@@ -597,6 +600,9 @@
      *          {@link SecurityManager#checkExec checkExec}
      *          method doesn't allow creation of the subprocess
      *
+     * @throws  UnsupportedOperationException
+     *          If the operating system does not support the creation of processes.
+     *
      * @throws  IOException
      *          If an I/O error occurs
      *
--- a/jdk/src/java.base/share/classes/java/lang/reflect/Executable.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/lang/reflect/Executable.java	Wed Feb 18 19:27:49 2015 -0800
@@ -662,7 +662,7 @@
      *
      * If this {@code Executable} object represents a static method or
      * represents a constructor of a top level, static member, local, or
-     * anoymous class, then the return value is null.
+     * anonymous class, then the return value is null.
      *
      * @return an object representing the receiver type of the method or
      * constructor represented by this {@code Executable} or {@code null} if
--- a/jdk/src/java.base/share/classes/java/math/BigDecimal.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/math/BigDecimal.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -4814,41 +4814,61 @@
         if (dividendHi >= divisor) {
             return null;
         }
+
         final int shift = Long.numberOfLeadingZeros(divisor);
         divisor <<= shift;
 
         final long v1 = divisor >>> 32;
         final long v0 = divisor & LONG_MASK;
 
-        long q1, q0;
-        long r_tmp;
-
         long tmp = dividendLo << shift;
         long u1 = tmp >>> 32;
         long u0 = tmp & LONG_MASK;
 
         tmp = (dividendHi << shift) | (dividendLo >>> 64 - shift);
         long u2 = tmp & LONG_MASK;
-        tmp = divWord(tmp,v1);
-        q1 = tmp & LONG_MASK;
-        r_tmp = tmp >>> 32;
+        long q1, r_tmp;
+        if (v1 == 1) {
+            q1 = tmp;
+            r_tmp = 0;
+        } else if (tmp >= 0) {
+            q1 = tmp / v1;
+            r_tmp = tmp - q1 * v1;
+        } else {
+            long[] rq = divRemNegativeLong(tmp, v1);
+            q1 = rq[1];
+            r_tmp = rq[0];
+        }
+
         while(q1 >= DIV_NUM_BASE || unsignedLongCompare(q1*v0, make64(r_tmp, u1))) {
             q1--;
             r_tmp += v1;
             if (r_tmp >= DIV_NUM_BASE)
                 break;
         }
+
         tmp = mulsub(u2,u1,v1,v0,q1);
         u1 = tmp & LONG_MASK;
-        tmp = divWord(tmp,v1);
-        q0 = tmp & LONG_MASK;
-        r_tmp = tmp >>> 32;
+        long q0;
+        if (v1 == 1) {
+            q0 = tmp;
+            r_tmp = 0;
+        } else if (tmp >= 0) {
+            q0 = tmp / v1;
+            r_tmp = tmp - q0 * v1;
+        } else {
+            long[] rq = divRemNegativeLong(tmp, v1);
+            q0 = rq[1];
+            r_tmp = rq[0];
+        }
+
         while(q0 >= DIV_NUM_BASE || unsignedLongCompare(q0*v0,make64(r_tmp,u0))) {
             q0--;
             r_tmp += v1;
             if (r_tmp >= DIV_NUM_BASE)
                 break;
         }
+
         if((int)q1 < 0) {
             // result (which is positive and unsigned here)
             // can't fit into long due to sign bit is used for value
@@ -4871,10 +4891,13 @@
                 }
             }
         }
+
         long q = make64(q1,q0);
         q*=sign;
+
         if (roundingMode == ROUND_DOWN && scale == preferredScale)
             return valueOf(q, scale);
+
         long r = mulsub(u1, u0, v1, v0, q0) >>> shift;
         if (r != 0) {
             boolean increment = needIncrement(divisor >>> shift, roundingMode, sign, q, r);
@@ -4917,28 +4940,35 @@
         }
     }
 
-    private static long divWord(long n, long dLong) {
-        long r;
-        long q;
-        if (dLong == 1) {
-            q = (int)n;
-            return (q & LONG_MASK);
-        }
+    /**
+     * Calculate the quotient and remainder of dividing a negative long by
+     * another long.
+     *
+     * @param n the numerator; must be negative
+     * @param d the denominator; must not be unity
+     * @return a two-element {@long} array with the remainder and quotient in
+     *         the initial and final elements, respectively
+     */
+    private static long[] divRemNegativeLong(long n, long d) {
+        assert n < 0 : "Non-negative numerator " + n;
+        assert d != 1 : "Unity denominator";
+
         // Approximate the quotient and remainder
-        q = (n >>> 1) / (dLong >>> 1);
-        r = n - q*dLong;
+        long q = (n >>> 1) / (d >>> 1);
+        long r = n - q * d;
 
         // Correct the approximation
         while (r < 0) {
-            r += dLong;
+            r += d;
             q--;
         }
-        while (r >= dLong) {
-            r -= dLong;
+        while (r >= d) {
+            r -= d;
             q++;
         }
-        // n - q*dlong == r && 0 <= r <dLong, hence we're done.
-        return (r << 32) | (q & LONG_MASK);
+
+        // n - q*d == r && 0 <= r < d, hence we're done.
+        return new long[] {r, q};
     }
 
     private static long make64(long hi, long lo) {
--- a/jdk/src/java.base/share/classes/java/net/DatagramSocket.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/net/DatagramSocket.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 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
@@ -1308,6 +1308,7 @@
     /**
      * Sets the value of a socket option.
      *
+     * @param <T> The type of the socket option value
      * @param name The socket option
      * @param value The value of the socket option. A value of {@code null}
      *              may be valid for some options.
@@ -1342,6 +1343,7 @@
     /**
      * Returns the value of a socket option.
      *
+     * @param <T> The type of the socket option value
      * @param name The socket option
      *
      * @return The value of the socket option.
--- a/jdk/src/java.base/share/classes/java/net/DatagramSocketImpl.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/net/DatagramSocketImpl.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -267,6 +267,7 @@
     /**
      * Called to set a socket option.
      *
+     * @param <T> The type of the socket option value
      * @param name The socket option
      *
      * @param value The value of the socket option. A value of {@code null}
@@ -276,7 +277,7 @@
      *         support the option
      *
      * @throws NullPointerException if name is {@code null}
-     *
+     * @throws IOException if an I/O problem occurs while attempting to set the option
      * @since 1.9
      */
     protected <T> void setOption(SocketOption<T> name, T value) throws IOException {
@@ -308,12 +309,15 @@
     /**
      * Called to get a socket option.
      *
+     * @return the socket option
+     * @param <T> The type of the socket option value
      * @param name The socket option
      *
      * @throws UnsupportedOperationException if the DatagramSocketImpl does not
      *         support the option
      *
      * @throws NullPointerException if name is {@code null}
+     * @throws IOException if an I/O problem occurs while attempting to set the option
      *
      * @since 1.9
      */
--- a/jdk/src/java.base/share/classes/java/net/ServerSocket.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/net/ServerSocket.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 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
@@ -924,6 +924,7 @@
     /**
      * Sets the value of a socket option.
      *
+     * @param <T> The type of the socket option value
      * @param name The socket option
      * @param value The value of the socket option. A value of {@code null}
      *              may be valid for some options.
@@ -957,6 +958,7 @@
     /**
      * Returns the value of a socket option.
      *
+     * @param <T> The type of the socket option value
      * @param name The socket option
      *
      * @return The value of the socket option.
--- a/jdk/src/java.base/share/classes/java/net/Socket.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/net/Socket.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 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
@@ -1727,6 +1727,7 @@
     /**
      * Sets the value of a socket option.
      *
+     * @param <T> The type of the socket option value
      * @param name The socket option
      * @param value The value of the socket option. A value of {@code null}
      *              may be valid for some options.
@@ -1758,6 +1759,7 @@
     /**
      * Returns the value of a socket option.
      *
+     * @param <T> The type of the socket option value
      * @param name The socket option
      *
      * @return The value of the socket option.
--- a/jdk/src/java.base/share/classes/java/net/SocketImpl.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/net/SocketImpl.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1995, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1995, 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
@@ -362,6 +362,7 @@
     /**
      * Called to set a socket option.
      *
+     * @param <T> The type of the socket option value
      * @param name The socket option
      *
      * @param value The value of the socket option. A value of {@code null}
@@ -397,6 +398,7 @@
     /**
      * Called to get a socket option.
      *
+     * @param <T> The type of the socket option value
      * @param name The socket option
      *
      * @return the value of the named option
--- a/jdk/src/java.base/share/classes/java/nio/channels/FileLock.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/nio/channels/FileLock.java	Wed Feb 18 19:27:49 2015 -0800
@@ -26,6 +26,7 @@
 package java.nio.channels;
 
 import java.io.IOException;
+import java.util.Objects;
 
 /**
  * A token representing a lock on a region of a file.
@@ -147,6 +148,7 @@
     protected FileLock(FileChannel channel,
                        long position, long size, boolean shared)
     {
+        Objects.requireNonNull(channel, "Null channel");
         if (position < 0)
             throw new IllegalArgumentException("Negative position");
         if (size < 0)
@@ -185,6 +187,7 @@
     protected FileLock(AsynchronousFileChannel channel,
                        long position, long size, boolean shared)
     {
+        Objects.requireNonNull(channel, "Null channel");
         if (position < 0)
             throw new IllegalArgumentException("Negative position");
         if (size < 0)
--- a/jdk/src/java.base/share/classes/java/security/KeyStore.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/security/KeyStore.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1618,11 +1618,13 @@
      * integrity check.
      *
      * <p>
-     * This method traverses the list of registered security {@link Providers},
-     * starting with the most preferred Provider.
-     * For each {@link KeyStoreSpi} implementation supported by a Provider,
-     * it invokes the {@link engineProbe} method to determine if it supports
-     * the specified keystore.
+     * This method traverses the list of registered security
+     * {@linkplain Provider providers}, starting with the most
+     * preferred Provider.
+     * For each {@link KeyStoreSpi} implementation supported by a
+     * Provider, it invokes the {@link
+     * KeyStoreSpi#engineProbe(InputStream) engineProbe} method to
+     * determine if it supports the specified keystore.
      * A new KeyStore object is returned that encapsulates the KeyStoreSpi
      * implementation from the first Provider that supports the specified file.
      *
@@ -1672,11 +1674,12 @@
      * unlock the keystore data or perform an integrity check.
      *
      * <p>
-     * This method traverses the list of registered security {@link Providers},
-     * starting with the most preferred Provider.
-     * For each {@link KeyStoreSpi} implementation supported by a Provider,
-     * it invokes the {@link engineProbe} method to determine if it supports
-     * the specified keystore.
+     * This method traverses the list of registered security {@linkplain
+     * Provider providers}, starting with the most preferred Provider.
+     * For each {@link KeyStoreSpi} implementation supported by a
+     * Provider, it invokes the {@link
+     * KeyStoreSpi#engineProbe(InputStream) engineProbe} method to
+     * determine if it supports the specified keystore.
      * A new KeyStore object is returned that encapsulates the KeyStoreSpi
      * implementation from the first Provider that supports the specified file.
      *
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/java/security/acl/Acl.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,241 @@
+/*
+ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package java.security.acl;
+
+import java.util.Enumeration;
+import java.security.Principal;
+
+/**
+ * Interface representing an Access Control List (ACL).  An Access
+ * Control List is a data structure used to guard access to
+ * resources.<p>
+ *
+ * An ACL can be thought of as a data structure with multiple ACL
+ * entries.  Each ACL entry, of interface type AclEntry, contains a
+ * set of permissions associated with a particular principal. (A
+ * principal represents an entity such as an individual user or a
+ * group). Additionally, each ACL entry is specified as being either
+ * positive or negative. If positive, the permissions are to be
+ * granted to the associated principal. If negative, the permissions
+ * are to be denied.<p>
+ *
+ * The ACL Entries in each ACL observe the following rules:
+ *
+ * <ul> <li>Each principal can have at most one positive ACL entry and
+ * one negative entry; that is, multiple positive or negative ACL
+ * entries are not allowed for any principal.  Each entry specifies
+ * the set of permissions that are to be granted (if positive) or
+ * denied (if negative).
+ *
+ * <li>If there is no entry for a particular principal, then the
+ * principal is considered to have a null (empty) permission set.
+ *
+ * <li>If there is a positive entry that grants a principal a
+ * particular permission, and a negative entry that denies the
+ * principal the same permission, the result is as though the
+ * permission was never granted or denied.
+ *
+ * <li>Individual permissions always override permissions of the
+ * group(s) to which the individual belongs. That is, individual
+ * negative permissions (specific denial of permissions) override the
+ * groups' positive permissions. And individual positive permissions
+ * override the groups' negative permissions.
+ *
+ * </ul>
+ *
+ * The {@code  java.security.acl } package provides the
+ * interfaces to the ACL and related data structures (ACL entries,
+ * groups, permissions, etc.), and the {@code  sun.security.acl }
+ * classes provide a default implementation of the interfaces. For
+ * example, {@code  java.security.acl.Acl } provides the
+ * interface to an ACL and the {@code  sun.security.acl.AclImpl }
+ * class provides the default implementation of the interface.<p>
+ *
+ * The {@code  java.security.acl.Acl } interface extends the
+ * {@code  java.security.acl.Owner } interface. The Owner
+ * interface is used to maintain a list of owners for each ACL.  Only
+ * owners are allowed to modify an ACL. For example, only an owner can
+ * call the ACL's {@code addEntry} method to add a new ACL entry
+ * to the ACL.
+ *
+ * @see java.security.acl.AclEntry
+ * @see java.security.acl.Owner
+ * @see java.security.acl.Acl#getPermissions
+ *
+ * @author Satish Dharmaraj
+ */
+
+public interface Acl extends Owner {
+
+    /**
+     * Sets the name of this ACL.
+     *
+     * @param caller the principal invoking this method. It must be an
+     * owner of this ACL.
+     *
+     * @param name the name to be given to this ACL.
+     *
+     * @exception NotOwnerException if the caller principal
+     * is not an owner of this ACL.
+     *
+     * @see #getName
+     */
+    public void setName(Principal caller, String name)
+      throws NotOwnerException;
+
+    /**
+     * Returns the name of this ACL.
+     *
+     * @return the name of this ACL.
+     *
+     * @see #setName
+     */
+    public String getName();
+
+    /**
+     * Adds an ACL entry to this ACL. An entry associates a principal
+     * (e.g., an individual or a group) with a set of
+     * permissions. Each principal can have at most one positive ACL
+     * entry (specifying permissions to be granted to the principal)
+     * and one negative ACL entry (specifying permissions to be
+     * denied). If there is already an ACL entry of the same type
+     * (negative or positive) already in the ACL, false is returned.
+     *
+     * @param caller the principal invoking this method. It must be an
+     * owner of this ACL.
+     *
+     * @param entry the ACL entry to be added to this ACL.
+     *
+     * @return true on success, false if an entry of the same type
+     * (positive or negative) for the same principal is already
+     * present in this ACL.
+     *
+     * @exception NotOwnerException if the caller principal
+     *  is not an owner of this ACL.
+     */
+    public boolean addEntry(Principal caller, AclEntry entry)
+      throws NotOwnerException;
+
+    /**
+     * Removes an ACL entry from this ACL.
+     *
+     * @param caller the principal invoking this method. It must be an
+     * owner of this ACL.
+     *
+     * @param entry the ACL entry to be removed from this ACL.
+     *
+     * @return true on success, false if the entry is not part of this ACL.
+     *
+     * @exception NotOwnerException if the caller principal is not
+     * an owner of this Acl.
+     */
+    public boolean removeEntry(Principal caller, AclEntry entry)
+          throws NotOwnerException;
+
+    /**
+     * Returns an enumeration for the set of allowed permissions for the
+     * specified principal (representing an entity such as an individual or
+     * a group). This set of allowed permissions is calculated as
+     * follows:
+     *
+     * <ul>
+     *
+     * <li>If there is no entry in this Access Control List for the
+     * specified principal, an empty permission set is returned.
+     *
+     * <li>Otherwise, the principal's group permission sets are determined.
+     * (A principal can belong to one or more groups, where a group is a
+     * group of principals, represented by the Group interface.)
+     * The group positive permission set is the union of all
+     * the positive permissions of each group that the principal belongs to.
+     * The group negative permission set is the union of all
+     * the negative permissions of each group that the principal belongs to.
+     * If there is a specific permission that occurs in both
+     * the positive permission set and the negative permission set,
+     * it is removed from both.<p>
+     *
+     * The individual positive and negative permission sets are also
+     * determined. The positive permission set contains the permissions
+     * specified in the positive ACL entry (if any) for the principal.
+     * Similarly, the negative permission set contains the permissions
+     * specified in the negative ACL entry (if any) for the principal.
+     * The individual positive (or negative) permission set is considered
+     * to be null if there is not a positive (negative) ACL entry for the
+     * principal in this ACL.<p>
+     *
+     * The set of permissions granted to the principal is then calculated
+     * using the simple rule that individual permissions always override
+     * the group permissions. That is, the principal's individual negative
+     * permission set (specific denial of permissions) overrides the group
+     * positive permission set, and the principal's individual positive
+     * permission set overrides the group negative permission set.
+     *
+     * </ul>
+     *
+     * @param user the principal whose permission set is to be returned.
+     *
+     * @return the permission set specifying the permissions the principal
+     * is allowed.
+     */
+    public Enumeration<Permission> getPermissions(Principal user);
+
+    /**
+     * Returns an enumeration of the entries in this ACL. Each element in
+     * the enumeration is of type AclEntry.
+     *
+     * @return an enumeration of the entries in this ACL.
+     */
+    public Enumeration<AclEntry> entries();
+
+    /**
+     * Checks whether or not the specified principal has the specified
+     * permission. If it does, true is returned, otherwise false is returned.
+     *
+     * More specifically, this method checks whether the passed permission
+     * is a member of the allowed permission set of the specified principal.
+     * The allowed permission set is determined by the same algorithm as is
+     * used by the {@code getPermissions} method.
+     *
+     * @param principal the principal, assumed to be a valid authenticated
+     * Principal.
+     *
+     * @param permission the permission to be checked for.
+     *
+     * @return true if the principal has the specified permission, false
+     * otherwise.
+     *
+     * @see #getPermissions
+     */
+    public boolean checkPermission(Principal principal, Permission permission);
+
+    /**
+     * Returns a string representation of the
+     * ACL contents.
+     *
+     * @return a string representation of the ACL contents.
+     */
+    public String toString();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/java/security/acl/AclEntry.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,154 @@
+/*
+ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package java.security.acl;
+
+import java.util.Enumeration;
+import java.security.Principal;
+
+/**
+ * This is the interface used for representing one entry in an Access
+ * Control List (ACL).<p>
+ *
+ * An ACL can be thought of as a data structure with multiple ACL entry
+ * objects. Each ACL entry object contains a set of permissions associated
+ * with a particular principal. (A principal represents an entity such as
+ * an individual user or a group). Additionally, each ACL entry is specified
+ * as being either positive or negative. If positive, the permissions are
+ * to be granted to the associated principal. If negative, the permissions
+ * are to be denied. Each principal can have at most one positive ACL entry
+ * and one negative entry; that is, multiple positive or negative ACL
+ * entries are not allowed for any principal.
+ *
+ * Note: ACL entries are by default positive. An entry becomes a
+ * negative entry only if the
+ * {@link #setNegativePermissions() setNegativePermissions}
+ * method is called on it.
+ *
+ * @see java.security.acl.Acl
+ *
+ * @author      Satish Dharmaraj
+ */
+public interface AclEntry extends Cloneable {
+
+    /**
+     * Specifies the principal for which permissions are granted or denied
+     * by this ACL entry. If a principal was already set for this ACL entry,
+     * false is returned, otherwise true is returned.
+     *
+     * @param user the principal to be set for this entry.
+     *
+     * @return true if the principal is set, false if there was
+     * already a principal set for this entry.
+     *
+     * @see #getPrincipal
+     */
+    public boolean setPrincipal(Principal user);
+
+    /**
+     * Returns the principal for which permissions are granted or denied by
+     * this ACL entry. Returns null if there is no principal set for this
+     * entry yet.
+     *
+     * @return the principal associated with this entry.
+     *
+     * @see #setPrincipal
+     */
+    public Principal getPrincipal();
+
+    /**
+     * Sets this ACL entry to be a negative one. That is, the associated
+     * principal (e.g., a user or a group) will be denied the permission set
+     * specified in the entry.
+     *
+     * Note: ACL entries are by default positive. An entry becomes a
+     * negative entry only if this {@code setNegativePermissions}
+     * method is called on it.
+     */
+    public void setNegativePermissions();
+
+    /**
+     * Returns true if this is a negative ACL entry (one denying the
+     * associated principal the set of permissions in the entry), false
+     * otherwise.
+     *
+     * @return true if this is a negative ACL entry, false if it's not.
+     */
+    public boolean isNegative();
+
+    /**
+     * Adds the specified permission to this ACL entry. Note: An entry can
+     * have multiple permissions.
+     *
+     * @param permission the permission to be associated with
+     * the principal in this entry.
+     *
+     * @return true if the permission was added, false if the
+     * permission was already part of this entry's permission set.
+     */
+    public boolean addPermission(Permission permission);
+
+    /**
+     * Removes the specified permission from this ACL entry.
+     *
+     * @param permission the permission to be removed from this entry.
+     *
+     * @return true if the permission is removed, false if the
+     * permission was not part of this entry's permission set.
+     */
+    public boolean removePermission(Permission permission);
+
+    /**
+     * Checks if the specified permission is part of the
+     * permission set in this entry.
+     *
+     * @param permission the permission to be checked for.
+     *
+     * @return true if the permission is part of the
+     * permission set in this entry, false otherwise.
+     */
+    public boolean checkPermission(Permission permission);
+
+    /**
+     * Returns an enumeration of the permissions in this ACL entry.
+     *
+     * @return an enumeration of the permissions in this ACL entry.
+     */
+    public Enumeration<Permission> permissions();
+
+    /**
+     * Returns a string representation of the contents of this ACL entry.
+     *
+     * @return a string representation of the contents.
+     */
+    public String toString();
+
+    /**
+     * Clones this ACL entry.
+     *
+     * @return a clone of this ACL entry.
+     */
+    public Object clone();
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/java/security/acl/AclNotFoundException.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 1996, 2003, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package java.security.acl;
+
+/**
+ * This is an exception that is thrown whenever a reference is made to a
+ * non-existent ACL (Access Control List).
+ *
+ * @author      Satish Dharmaraj
+ */
+public class AclNotFoundException extends Exception {
+
+    private static final long serialVersionUID = 5684295034092681791L;
+
+    /**
+     * Constructs an AclNotFoundException.
+     */
+    public AclNotFoundException() {
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/java/security/acl/Group.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,87 @@
+/*
+ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package java.security.acl;
+
+import java.util.Enumeration;
+import java.security.Principal;
+
+/**
+ * This interface is used to represent a group of principals. (A principal
+ * represents an entity such as an individual user or a company). <p>
+ *
+ * Note that Group extends Principal. Thus, either a Principal or a Group can
+ * be passed as an argument to methods containing a Principal parameter. For
+ * example, you can add either a Principal or a Group to a Group object by
+ * calling the object's {@code addMember} method, passing it the
+ * Principal or Group.
+ *
+ * @author      Satish Dharmaraj
+ */
+public interface Group extends Principal {
+
+    /**
+     * Adds the specified member to the group.
+     *
+     * @param user the principal to add to this group.
+     *
+     * @return true if the member was successfully added,
+     * false if the principal was already a member.
+     */
+    public boolean addMember(Principal user);
+
+    /**
+     * Removes the specified member from the group.
+     *
+     * @param user the principal to remove from this group.
+     *
+     * @return true if the principal was removed, or
+     * false if the principal was not a member.
+     */
+    public boolean removeMember(Principal user);
+
+    /**
+     * Returns true if the passed principal is a member of the group.
+     * This method does a recursive search, so if a principal belongs to a
+     * group which is a member of this group, true is returned.
+     *
+     * @param member the principal whose membership is to be checked.
+     *
+     * @return true if the principal is a member of this group,
+     * false otherwise.
+     */
+    public boolean isMember(Principal member);
+
+
+    /**
+     * Returns an enumeration of the members in the group.
+     * The returned objects can be instances of either Principal
+     * or Group (which is a subclass of Principal).
+     *
+     * @return an enumeration of the group members.
+     */
+    public Enumeration<? extends Principal> members();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/java/security/acl/LastOwnerException.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 1996, 2003, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package java.security.acl;
+
+/**
+ * This is an exception that is thrown whenever an attempt is made to delete
+ * the last owner of an Access Control List.
+ *
+ * @see java.security.acl.Owner#deleteOwner
+ *
+ * @author Satish Dharmaraj
+ */
+public class LastOwnerException extends Exception {
+
+    private static final long serialVersionUID = -5141997548211140359L;
+
+    /**
+     * Constructs a LastOwnerException.
+     */
+    public LastOwnerException() {
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/java/security/acl/NotOwnerException.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 1996, 2003, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package java.security.acl;
+
+/**
+ * This is an exception that is thrown whenever the modification of an object
+ * (such as an Access Control List) is only allowed to be done by an owner of
+ * the object, but the Principal attempting the modification is not an owner.
+ *
+ * @author      Satish Dharmaraj
+ */
+public class NotOwnerException extends Exception {
+
+    private static final long serialVersionUID = -5555597911163362399L;
+
+    /**
+     * Constructs a NotOwnerException.
+     */
+    public NotOwnerException() {
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/java/security/acl/Owner.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,95 @@
+/*
+ * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package java.security.acl;
+
+import java.security.Principal;
+
+/**
+ * Interface for managing owners of Access Control Lists (ACLs) or ACL
+ * configurations. (Note that the Acl interface in the
+ * {@code  java.security.acl} package extends this Owner
+ * interface.) The initial owner Principal should be specified as an
+ * argument to the constructor of the class implementing this interface.
+ *
+ * @see java.security.acl.Acl
+ *
+ */
+public interface Owner {
+
+    /**
+     * Adds an owner. Only owners can modify ACL contents. The caller
+     * principal must be an owner of the ACL in order to invoke this method.
+     * That is, only an owner can add another owner. The initial owner is
+     * configured at ACL construction time.
+     *
+     * @param caller the principal invoking this method. It must be an owner
+     * of the ACL.
+     *
+     * @param owner the owner that should be added to the list of owners.
+     *
+     * @return true if successful, false if owner is already an owner.
+     * @exception NotOwnerException if the caller principal is not an owner
+     * of the ACL.
+     */
+    public boolean addOwner(Principal caller, Principal owner)
+      throws NotOwnerException;
+
+    /**
+     * Deletes an owner. If this is the last owner in the ACL, an exception is
+     * raised.<p>
+     *
+     * The caller principal must be an owner of the ACL in order to invoke
+     * this method.
+     *
+     * @param caller the principal invoking this method. It must be an owner
+     * of the ACL.
+     *
+     * @param owner the owner to be removed from the list of owners.
+     *
+     * @return true if the owner is removed, false if the owner is not part
+     * of the list of owners.
+     *
+     * @exception NotOwnerException if the caller principal is not an owner
+     * of the ACL.
+     *
+     * @exception LastOwnerException if there is only one owner left, so that
+     * deleteOwner would leave the ACL owner-less.
+     */
+    public boolean deleteOwner(Principal caller, Principal owner)
+      throws NotOwnerException, LastOwnerException;
+
+    /**
+     * Returns true if the given principal is an owner of the ACL.
+     *
+     * @param owner the principal to be checked to determine whether or not
+     * it is an owner.
+     *
+     * @return true if the passed principal is in the list of owners, false
+     * if not.
+     */
+    public boolean isOwner(Principal owner);
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/java/security/acl/Permission.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 1996, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+package java.security.acl;
+
+
+/**
+ * This interface represents a permission, such as that used to grant
+ * a particular type of access to a resource.
+ *
+ * @author Satish Dharmaraj
+ */
+public interface Permission {
+
+    /**
+     * Returns true if the object passed matches the permission represented
+     * in this interface.
+     *
+     * @param another the Permission object to compare with.
+     *
+     * @return true if the Permission objects are equal, false otherwise
+     */
+    public boolean equals(Object another);
+
+    /**
+     * Prints a string representation of this permission.
+     *
+     * @return the string representation of the permission.
+     */
+    public String toString();
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/src/java.base/share/classes/java/security/acl/package-info.java	Wed Feb 18 19:27:49 2015 -0800
@@ -0,0 +1,33 @@
+/*
+ * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * The classes and interfaces in this package have been
+ * superseded by classes in the java.security package.
+ * See that package and, for example, java.security.Permission for details.
+ *
+ * @since 1.1
+ */
+package java.security.acl;
--- a/jdk/src/java.base/share/classes/java/time/Clock.java	Tue Feb 17 13:19:23 2015 -0500
+++ b/jdk/src/java.base/share/classes/java/time/Clock.java	Wed Feb 18 19:27:49 2015 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 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
@@ -61,12 +61,15 @@
  */
 package java.time;
 
+import java.io.IOException;
+import java.io.ObjectInputStream;
 import static java.time.LocalTime.NANOS_PER_MINUTE;
 import static java.time.LocalTime.NANOS_PER_SECOND;
 
 import java.io.Serializable;
 import java.util.Objects;
 import java.util.TimeZone;
+import sun.misc.VM;
 
 /**
  * A clock providing access to the current instant, date and time using a time-zone.
@@ -446,10 +449,22 @@
      */
     static final class SystemClock extends Clock implements Serializable {
         private static final long serialVersionUID = 6740630888130243051L;
+        private static final long OFFSET_SEED =
+                System.currentTimeMillis()/1000 - 1024; // initial offest
         private final ZoneId zone;
+        // We don't actually need a volatile here.
+        // We don't care if offset is set or read concurrently by multiple
+        // threads - we just need a value which is 'recent enough' - in other
+        // words something that has been updated at least once in the last
+        // 2^32 secs (~136 years). And even if we by chance see an invalid
+        // offset, the worst that can happen is that we will get a -1 value
+        // from getNanoTimeAdjustment, forcing us to update the offset
+        // once again.
+        private transient long offset;
 
         SystemClock(ZoneId zone) {
             this.zone = zone;
+            this.offset = OFFSET_SEED;
         }
         @Override
         public ZoneId getZone() {
@@ -464,11 +479,50 @@
         }
         @Override
         public long millis() {
+            // System.currentTimeMillis() and VM.getNanoTimeAdjustment(offset)
+            // use the same time source - System.currentTimeMillis() simply
+            // limits the resolution to milliseconds.
+            // So we take the faster path and call System.currentTimeMillis()
+            // directly - in order to avoid the performance penalty of
+            // VM.getNanoTimeAdjustment(offset) which is less efficient.
             return System.currentTimeMillis();
         }
         @Override
         public Instant instant() {
-            return Instant.ofEpochMilli(millis());
+            // Take a local copy of offset. offset can be updated concurrently
+            // by other threads (even if we haven't made it volatile) so we will
+            // work with a local copy.
+            long localOffset = offset;
+            long adjustment = VM.getNanoTimeAdjustment(localOffset);
+
+            if (adjustment == -1) {
+                // -1 is a sentinel value returned by VM.getNanoTimeAdjustment
+                // when the offset it is given is too far off the current UTC
+                // time. In principle, this should not happen unless the
+                // JVM has run for more than ~136 years (not likely) or
+                // someone is fiddling with the system time, or the offset is
+                // by chance at 1ns in the future (very unlikely).
+                // We can easily recover from all these conditions by bringing
+