changeset 29521:6962c169e541

Merge
author prr
date Wed, 11 Mar 2015 08:30:40 -0700
parents 2151f4ba1a05 89636c9b09d0
children b84395d0bc4c 68195efbe982
files
diffstat 46 files changed, 546 insertions(+), 164 deletions(-) [+]
line wrap: on
line diff
--- a/jdk/make/CompileDemos.gmk	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/make/CompileDemos.gmk	Wed Mar 11 08:30:40 2015 -0700
@@ -316,13 +316,13 @@
   endif
 endef
 
-$(eval $(call SetupJVMTIDemo,compiledMethodLoad, agent_util, , , , , , , , pointer-to-int-cast format, , format))
+$(eval $(call SetupJVMTIDemo,compiledMethodLoad, agent_util))
 $(eval $(call SetupJVMTIDemo,gctest, agent_util))
 $(eval $(call SetupJVMTIDemo,heapTracker, agent_util java_crw_demo))
 $(eval $(call SetupJVMTIDemo,heapViewer, agent_util))
 $(eval $(call SetupJVMTIDemo,minst, agent_util java_crw_demo))
 $(eval $(call SetupJVMTIDemo,mtrace, agent_util java_crw_demo))
-$(eval $(call SetupJVMTIDemo,waiters, agent_util, , C++, , , , , , , 4101))
+$(eval $(call SetupJVMTIDemo,waiters, agent_util, , C++))
 $(eval $(call SetupJVMTIDemo,versionCheck, agent_util))
 
 ##################################################################################################
--- a/jdk/src/demo/share/jvmti/compiledMethodLoad/compiledMethodLoad.c	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/demo/share/jvmti/compiledMethodLoad/compiledMethodLoad.c	Wed Mar 11 08:30:40 2015 -0700
@@ -143,7 +143,7 @@
 
         for (i = 0; i < numpcs; i++) {
             PCStackInfo pcrecord = (record->pcinfo[i]);
-            fprintf(fp, "PcDescriptor(pc=0x%lx):\n", (jint)(pcrecord.pc));
+            fprintf(fp, "PcDescriptor(pc=%p):\n", pcrecord.pc);
             print_stack_frames(&pcrecord, jvmti, fp);
         }
     }
--- a/jdk/src/demo/share/jvmti/waiters/Agent.cpp	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/demo/share/jvmti/waiters/Agent.cpp	Wed Mar 11 08:30:40 2015 -0700
@@ -111,8 +111,6 @@
 /* VM initialization and VM death calls to Agent */
 Agent::Agent(jvmtiEnv *jvmti, JNIEnv *env, jthread thread)
 {
-    jvmtiError err;
-
     stdout_message("Agent created..\n");
     stdout_message("VMInit...\n");
     /* Start monitor list */
@@ -129,8 +127,6 @@
 
 void Agent::vm_death(jvmtiEnv *jvmti, JNIEnv *env)
 {
-    jvmtiError err;
-
     /* Delete all Monitors we allocated */
     for ( int i = 0; i < (int)monitor_count; i++ ) {
         delete monitor_list[i];
--- a/jdk/src/java.base/share/classes/com/sun/security/cert/internal/x509/X509V1CertImpl.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/com/sun/security/cert/internal/x509/X509V1CertImpl.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2001, 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
@@ -45,8 +45,13 @@
  * The X509V1CertImpl class is used as a conversion wrapper around
  * sun.security.x509.X509Cert certificates when running under JDK1.1.x.
  *
+ * @deprecated This is the implementation class for the deprecated
+ *  {@code javax.security.cert.X509Certificate} class. The classes in the
+ *  {@code java.security.cert} package should be used instead.
+ *
  * @author Jeff Nisewanger
  */
+@Deprecated
 public class X509V1CertImpl extends X509Certificate implements Serializable {
     static final long serialVersionUID = -2048442350420423405L;
     private java.security.cert.X509Certificate wrappedCert;
--- a/jdk/src/java.base/share/classes/java/lang/ProcessBuilder.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/java/lang/ProcessBuilder.java	Wed Mar 11 08:30:40 2015 -0700
@@ -171,6 +171,11 @@
  * variables, first call {@link java.util.Map#clear() Map.clear()}
  * before adding environment variables.
  *
+ * <p>
+ * Unless otherwise noted, passing a {@code null} argument to a constructor
+ * or method in this class will cause a {@link NullPointerException} to be
+ * thrown.
+ *
  * @author Martin Buchholz
  * @since 1.5
  */
@@ -193,7 +198,6 @@
      * command.
      *
      * @param  command the list containing the program and its arguments
-     * @throws NullPointerException if the argument is null
      */
     public ProcessBuilder(List<String> command) {
         if (command == null)
@@ -228,8 +232,6 @@
      *
      * @param  command the list containing the program and its arguments
      * @return this process builder
-     *
-     * @throws NullPointerException if the argument is null
      */
     public ProcessBuilder command(List<String> command) {
         if (command == null)
@@ -554,7 +556,6 @@
          * }</pre>
          *
          * @param file The {@code File} for the {@code Redirect}.
-         * @throws NullPointerException if the specified file is null
          * @return a redirect to read from the specified file
          */
         public static Redirect from(final File file) {
@@ -581,7 +582,6 @@
          * }</pre>
          *
          * @param file The {@code File} for the {@code Redirect}.
-         * @throws NullPointerException if the specified file is null
          * @return a redirect to write to the specified file
          */
         public static Redirect to(final File file) {
@@ -612,7 +612,6 @@
          * }</pre>
          *
          * @param file The {@code File} for the {@code Redirect}.
-         * @throws NullPointerException if the specified file is null
          * @return a redirect to append to the specified file
          */
         public static Redirect appendTo(final File file) {
--- a/jdk/src/java.base/share/classes/java/security/acl/Acl.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/java/security/acl/Acl.java	Wed Mar 11 08:30:40 2015 -0700
@@ -82,8 +82,12 @@
  * @see java.security.acl.Acl#getPermissions
  *
  * @author Satish Dharmaraj
+ *
+ * @deprecated This package has been replaced by {@code java.security.Policy}
+ *      and related classes since 1.2.
  */
 
+@Deprecated
 public interface Acl extends Owner {
 
     /**
--- a/jdk/src/java.base/share/classes/java/security/acl/AclEntry.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/java/security/acl/AclEntry.java	Wed Mar 11 08:30:40 2015 -0700
@@ -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
@@ -50,7 +50,11 @@
  * @see java.security.acl.Acl
  *
  * @author      Satish Dharmaraj
+ *
+ * @deprecated This package has been replaced by {@code java.security.Policy}
+ *      and related classes since 1.2.
  */
+@Deprecated
 public interface AclEntry extends Cloneable {
 
     /**
--- a/jdk/src/java.base/share/classes/java/security/acl/AclNotFoundException.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/java/security/acl/AclNotFoundException.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2003, 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
@@ -30,7 +30,11 @@
  * non-existent ACL (Access Control List).
  *
  * @author      Satish Dharmaraj
+ *
+ * @deprecated This package has been replaced by {@code java.security.Policy}
+ *      and related classes since 1.2.
  */
+@Deprecated
 public class AclNotFoundException extends Exception {
 
     private static final long serialVersionUID = 5684295034092681791L;
--- a/jdk/src/java.base/share/classes/java/security/acl/Group.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/java/security/acl/Group.java	Wed Mar 11 08:30:40 2015 -0700
@@ -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
@@ -39,7 +39,11 @@
  * Principal or Group.
  *
  * @author      Satish Dharmaraj
+ *
+ * @deprecated This package has been replaced by {@code java.security.Policy}
+ *      and related classes since 1.2.
  */
+@Deprecated
 public interface Group extends Principal {
 
     /**
--- a/jdk/src/java.base/share/classes/java/security/acl/LastOwnerException.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/java/security/acl/LastOwnerException.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2003, 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
@@ -32,7 +32,11 @@
  * @see java.security.acl.Owner#deleteOwner
  *
  * @author Satish Dharmaraj
+ *
+ * @deprecated This package has been replaced by {@code java.security.Policy}
+ *      and related classes since 1.2.
  */
+@Deprecated
 public class LastOwnerException extends Exception {
 
     private static final long serialVersionUID = -5141997548211140359L;
--- a/jdk/src/java.base/share/classes/java/security/acl/NotOwnerException.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/java/security/acl/NotOwnerException.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2003, 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
@@ -31,7 +31,11 @@
  * the object, but the Principal attempting the modification is not an owner.
  *
  * @author      Satish Dharmaraj
+ *
+ * @deprecated This package has been replaced by {@code java.security.Policy}
+ *      and related classes since 1.2.
  */
+@Deprecated
 public class NotOwnerException extends Exception {
 
     private static final long serialVersionUID = -5555597911163362399L;
--- a/jdk/src/java.base/share/classes/java/security/acl/Owner.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/java/security/acl/Owner.java	Wed Mar 11 08:30:40 2015 -0700
@@ -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
@@ -36,7 +36,10 @@
  *
  * @see java.security.acl.Acl
  *
+ * @deprecated This package has been replaced by {@code java.security.Policy}
+ *      and related classes since 1.2.
  */
+@Deprecated
 public interface Owner {
 
     /**
--- a/jdk/src/java.base/share/classes/java/security/acl/Permission.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/java/security/acl/Permission.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 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
@@ -31,7 +31,11 @@
  * a particular type of access to a resource.
  *
  * @author Satish Dharmaraj
+ *
+ * @deprecated This package has been replaced by {@code java.security.Policy}
+ *      and related classes since 1.2.
  */
+@Deprecated
 public interface Permission {
 
     /**
--- a/jdk/src/java.base/share/classes/java/security/acl/package-info.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/java/security/acl/package-info.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -24,10 +24,12 @@
  */
 
 /**
- * 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.
+ * The classes and interfaces in this package have been deprecated.
+ * The {@code java.security} package contains suitable replacements.
+ * See that package and, for example, {@code java.security.Permission}
+ * for details.
  *
  * @since 1.1
  */
+@Deprecated
 package java.security.acl;
--- a/jdk/src/java.base/share/classes/java/security/spec/PKCS8EncodedKeySpec.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/java/security/spec/PKCS8EncodedKeySpec.java	Wed Mar 11 08:30:40 2015 -0700
@@ -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
@@ -89,7 +89,7 @@
      * Java Cryptography Architecture Standard Algorithm Name Documentation</a>
      * for information about standard algorithm names.
      * @throws NullPointerException if {@code encodedKey}
-     * or {@algorithm} is null.
+     * or {@code algorithm} is null.
      * @throws IllegalArgumentException if {@code algorithm} is
      * the empty string {@code ""}
      * @since 1.9
--- a/jdk/src/java.base/share/classes/java/util/regex/Matcher.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/java/util/regex/Matcher.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1183,7 +1183,7 @@
      *
      * <p> Given the regular expression <tt>dog</tt>, the input
      * <tt>"zzzdogzzzdogzzz"</tt>, and the function
-     * <tt>mr -> mr.group().toUpperCase()</tt>, an invocation of this method on
+     * {@code mr -> mr.group().toUpperCase()}, an invocation of this method on
      * a matcher for that expression would yield the string
      * <tt>"zzzDOGzzzDOGzzz"</tt>.
      *
@@ -1405,7 +1405,7 @@
      *
      * <p> Given the regular expression <tt>dog</tt>, the input
      * <tt>"zzzdogzzzdogzzz"</tt>, and the function
-     * <tt>mr -> mr.group().toUpperCase()</tt>, an invocation of this method on
+     * {@code mr -> mr.group().toUpperCase()}, an invocation of this method on
      * a matcher for that expression would yield the string
      * <tt>"zzzDOGzzzdogzzz"</tt>.
      *
--- a/jdk/src/java.base/share/classes/javax/net/ssl/HandshakeCompletedEvent.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/javax/net/ssl/HandshakeCompletedEvent.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -152,7 +152,11 @@
      *          {@link javax.security.cert.X509Certificate} format).
      * @exception SSLPeerUnverifiedException if the peer is not verified.
      * @see #getPeerPrincipal()
+     * @deprecated The {@link #getPeerCertificates()} method that returns an
+     *               array of {@code java.security.cert.Certificate} should
+     *               be used instead.
      */
+    @Deprecated
     public javax.security.cert.X509Certificate [] getPeerCertificateChain()
             throws SSLPeerUnverifiedException
     {
--- a/jdk/src/java.base/share/classes/javax/net/ssl/SSLSession.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/javax/net/ssl/SSLSession.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -272,7 +272,11 @@
      * @exception SSLPeerUnverifiedException if the peer's identity
      *          has not been verified
      * @see #getPeerPrincipal()
+     * @deprecated The {@link #getPeerCertificates()} method that returns an
+     *               array of {@code java.security.cert.Certificate} should
+     *               be used instead.
      */
+    @Deprecated
     public javax.security.cert.X509Certificate [] getPeerCertificateChain()
             throws SSLPeerUnverifiedException;
 
--- a/jdk/src/java.base/share/classes/javax/security/cert/Certificate.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/javax/security/cert/Certificate.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -57,9 +57,11 @@
  *
  * @since 1.4
  * @see X509Certificate
+ * @deprecated Use the classes in {@code java.security.cert} instead.
  *
  * @author Hemma Prafullchandra
  */
+@Deprecated
 public abstract class Certificate {
 
     /**
--- a/jdk/src/java.base/share/classes/javax/security/cert/CertificateEncodingException.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/javax/security/cert/CertificateEncodingException.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,7 +38,9 @@
  *
  * @since 1.4
  * @author Hemma Prafullchandra
+ * @deprecated Use the classes in {@code java.security.cert} instead.
  */
+@Deprecated
 public class CertificateEncodingException extends CertificateException {
 
     private static final long serialVersionUID = -8187642723048403470L;
--- a/jdk/src/java.base/share/classes/javax/security/cert/CertificateException.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/javax/security/cert/CertificateException.java	Wed Mar 11 08:30:40 2015 -0700
@@ -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
@@ -38,7 +38,9 @@
  * @author Hemma Prafullchandra
  * @since 1.4
  * @see Certificate
+ * @deprecated Use the classes in {@code java.security.cert} instead.
  */
+@Deprecated
 public class CertificateException extends Exception {
 
     private static final long serialVersionUID = -5757213374030785290L;
--- a/jdk/src/java.base/share/classes/javax/security/cert/CertificateExpiredException.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/javax/security/cert/CertificateExpiredException.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,7 +40,9 @@
  *
  * @since 1.4
  * @author Hemma Prafullchandra
+ * @deprecated Use the classes in {@code java.security.cert} instead.
  */
+@Deprecated
 public class CertificateExpiredException extends CertificateException {
 
     private static final long serialVersionUID = 5091601212177261883L;
--- a/jdk/src/java.base/share/classes/javax/security/cert/CertificateNotYetValidException.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/javax/security/cert/CertificateNotYetValidException.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -40,7 +40,9 @@
  *
  * @since 1.4
  * @author Hemma Prafullchandra
+ * @deprecated Use the classes in {@code java.security.cert} instead.
  */
+@Deprecated
 public class CertificateNotYetValidException extends CertificateException {
 
     private static final long serialVersionUID = -8976172474266822818L;
--- a/jdk/src/java.base/share/classes/javax/security/cert/CertificateParsingException.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/javax/security/cert/CertificateParsingException.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -39,7 +39,9 @@
  *
  * @since 1.4
  * @author Hemma Prafullchandra
+ * @deprecated Use the classes in {@code java.security.cert} instead.
  */
+@Deprecated
 public class CertificateParsingException extends CertificateException {
 
     private static final long serialVersionUID = -8449352422951136229L;
--- a/jdk/src/java.base/share/classes/javax/security/cert/X509Certificate.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/javax/security/cert/X509Certificate.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -124,7 +124,9 @@
  * @see Certificate
  * @see java.security.cert.X509Extension
  * @see java.security.Security security properties
+ * @deprecated Use the classes in {@code java.security.cert} instead.
  */
+@Deprecated
 public abstract class X509Certificate extends Certificate {
 
     /*
--- a/jdk/src/java.base/share/classes/javax/security/cert/package-info.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/javax/security/cert/package-info.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
+ * 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
@@ -26,15 +26,16 @@
 /**
  * Provides classes for public key certificates.
  *
- * These classes include a simplified version of the
- * java.security.cert package.  These classes were developed
- * as part of the Java Secure Socket
+ * This package has been deprecated. These classes include a simplified
+ * version of the {@code java.security.cert} package.  These classes were
+ * developed as part of the Java Secure Socket
  * Extension (JSSE).  When JSSE was added to the J2SE version 1.4, this
  * package was added for backward-compatibility reasons only.
  *
  * New applications should not use this package, but rather
- * java.security.cert.
+ * {@code java.security.cert}.
  *
  * @since 1.4
  */
+@Deprecated
 package javax.security.cert;
--- a/jdk/src/java.base/share/classes/sun/misc/Unsafe.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/sun/misc/Unsafe.java	Wed Mar 11 08:30:40 2015 -0700
@@ -57,31 +57,29 @@
      * Provides the caller with the capability of performing unsafe
      * operations.
      *
-     * <p> The returned <code>Unsafe</code> object should be carefully guarded
+     * <p>The returned {@code Unsafe} object should be carefully guarded
      * by the caller, since it can be used to read and write data at arbitrary
      * memory addresses.  It must never be passed to untrusted code.
      *
-     * <p> Most methods in this class are very low-level, and correspond to a
+     * <p>Most methods in this class are very low-level, and correspond to a
      * small number of hardware instructions (on typical machines).  Compilers
      * are encouraged to optimize these methods accordingly.
      *
-     * <p> Here is a suggested idiom for using unsafe operations:
+     * <p>Here is a suggested idiom for using unsafe operations:
      *
-     * <blockquote><pre>
+     * <pre> {@code
      * class MyTrustedClass {
      *   private static final Unsafe unsafe = Unsafe.getUnsafe();
      *   ...
      *   private long myCountAddress = ...;
      *   public int getCount() { return unsafe.getByte(myCountAddress); }
-     * }
-     * </pre></blockquote>
+     * }}</pre>
      *
-     * (It may assist compilers to make the local variable be
-     * <code>final</code>.)
+     * (It may assist compilers to make the local variable {@code final}.)
      *
-     * @exception  SecurityException  if a security manager exists and its
-     *             <code>checkPropertiesAccess</code> method doesn't allow
-     *             access to the system properties.
+     * @throws  SecurityException  if a security manager exists and its
+     *          {@code checkPropertiesAccess} method doesn't allow
+     *          access to the system properties.
      */
     @CallerSensitive
     public static Unsafe getUnsafe() {
@@ -100,28 +98,27 @@
     /**
      * Fetches a value from a given Java variable.
      * More specifically, fetches a field or array element within the given
-     * object <code>o</code> at the given offset, or (if <code>o</code> is
-     * null) from the memory address whose numerical value is the given
-     * offset.
+     * object {@code o} at the given offset, or (if {@code o} is null)
+     * from the memory address whose numerical value is the given offset.
      * <p>
      * The results are undefined unless one of the following cases is true:
      * <ul>
      * <li>The offset was obtained from {@link #objectFieldOffset} on
      * the {@link java.lang.reflect.Field} of some Java field and the object
-     * referred to by <code>o</code> is of a class compatible with that
+     * referred to by {@code o} is of a class compatible with that
      * field's class.
      *
-     * <li>The offset and object reference <code>o</code> (either null or
+     * <li>The offset and object reference {@code o} (either null or
      * non-null) were both obtained via {@link #staticFieldOffset}
      * and {@link #staticFieldBase} (respectively) from the
      * reflective {@link Field} representation of some Java field.
      *
-     * <li>The object referred to by <code>o</code> is an array, and the offset
-     * is an integer of the form <code>B+N*S</code>, where <code>N</code> is
-     * a valid index into the array, and <code>B</code> and <code>S</code> are
+     * <li>The object referred to by {@code o} is an array, and the offset
+     * is an integer of the form {@code B+N*S}, where {@code N} is
+     * a valid index into the array, and {@code B} and {@code S} are
      * the values obtained by {@link #arrayBaseOffset} and {@link
      * #arrayIndexScale} (respectively) from the array's class.  The value
-     * referred to is the <code>N</code><em>th</em> element of the array.
+     * referred to is the {@code N}<em>th</em> element of the array.
      *
      * </ul>
      * <p>
@@ -162,7 +159,7 @@
      * is stored into that variable.
      * <p>
      * The variable must be of the same type as the method
-     * parameter <code>x</code>.
+     * parameter {@code x}.
      *
      * @param o Java heap object in which the variable resides, if any, else
      *        null
@@ -184,9 +181,9 @@
     /**
      * Stores a reference value into a given Java variable.
      * <p>
-     * Unless the reference <code>x</code> being stored is either null
+     * Unless the reference {@code x} being stored is either null
      * or matches the field type, the results are undefined.
-     * If the reference <code>o</code> is non-null, car marks or
+     * If the reference {@code o} is non-null, car marks or
      * other store barriers for that object (if the VM requires them)
      * are updated.
      * @see #putInt(Object, long, int)
@@ -272,11 +269,11 @@
      * zero, or does not point into a block obtained from {@link
      * #allocateMemory}, the results are undefined.
      *
-     * <p> If the native pointer is less than 64 bits wide, it is extended as
+     * <p>If the native pointer is less than 64 bits wide, it is extended as
      * an unsigned number to a Java long.  The pointer may be indexed by any
      * given byte offset, simply by adding that offset (as a simple integer) to
      * the long representing the pointer.  The number of bytes actually read
-     * from the target address maybe determined by consulting {@link
+     * from the target address may be determined by consulting {@link
      * #addressSize}.
      *
      * @see #allocateMemory
@@ -288,7 +285,7 @@
      * zero, or does not point into a block obtained from {@link
      * #allocateMemory}, the results are undefined.
      *
-     * <p> The number of bytes actually written at the target address maybe
+     * <p>The number of bytes actually written at the target address may be
      * determined by consulting {@link #addressSize}.
      *
      * @see #getAddress(long)
@@ -357,7 +354,7 @@
      * (usually zero).  This provides a <em>single-register</em> addressing mode,
      * as discussed in {@link #getInt(Object,long)}.
      *
-     * <p>Equivalent to <code>setMemory(null, address, bytes, value)</code>.
+     * <p>Equivalent to {@code setMemory(null, address, bytes, value)}.
      */
     public void setMemory(long address, long bytes, byte value) {
         setMemory(null, address, bytes, value);
@@ -388,7 +385,7 @@
      * block.  This provides a <em>single-register</em> addressing mode,
      * as discussed in {@link #getInt(Object,long)}.
      *
-     * Equivalent to <code>copyMemory(null, srcAddress, null, destAddress, bytes)</code>.
+     * Equivalent to {@code copyMemory(null, srcAddress, null, destAddress, bytes)}.
      */
     public void copyMemory(long srcAddress, long destAddress, long bytes) {
         copyMemory(null, srcAddress, null, destAddress, bytes);
@@ -413,7 +410,7 @@
     public static final int INVALID_FIELD_OFFSET   = -1;
 
     /**
-     * Report the location of a given field in the storage allocation of its
+     * Reports the location of a given field in the storage allocation of its
      * class.  Do not expect to perform any sort of arithmetic on this offset;
      * it is just a cookie which is passed to the unsafe heap memory accessors.
      *
@@ -433,7 +430,7 @@
     public native long objectFieldOffset(Field f);
 
     /**
-     * Report the location of a given static field, in conjunction with {@link
+     * Reports the location of a given static field, in conjunction with {@link
      * #staticFieldBase}.
      * <p>Do not expect to perform any sort of arithmetic on this offset;
      * it is just a cookie which is passed to the unsafe heap memory accessors.
@@ -452,7 +449,7 @@
     public native long staticFieldOffset(Field f);
 
     /**
-     * Report the location of a given static field, in conjunction with {@link
+     * Reports the location of a given static field, in conjunction with {@link
      * #staticFieldOffset}.
      * <p>Fetch the base "Object", if any, with which static fields of the
      * given class can be accessed via methods like {@link #getInt(Object,
@@ -464,7 +461,7 @@
     public native Object staticFieldBase(Field f);
 
     /**
-     * Detect if the given class may need to be initialized. This is often
+     * Detects if the given class may need to be initialized. This is often
      * needed in conjunction with obtaining the static field base of a
      * class.
      * @return false only if a call to {@code ensureClassInitialized} would have no effect
@@ -472,14 +469,14 @@
     public native boolean shouldBeInitialized(Class<?> c);
 
     /**
-     * Ensure the given class has been initialized. This is often
+     * Ensures the given class has been initialized. This is often
      * needed in conjunction with obtaining the static field base of a
      * class.
      */
     public native void ensureClassInitialized(Class<?> c);
 
     /**
-     * Report the offset of the first element in the storage allocation of a
+     * Reports the offset of the first element in the storage allocation of a
      * given array class.  If {@link #arrayIndexScale} returns a non-zero value
      * for the same class, you may use that scale factor, together with this
      * base offset, to form new offsets to access elements of arrays of the
@@ -527,7 +524,7 @@
             = theUnsafe.arrayBaseOffset(Object[].class);
 
     /**
-     * Report the scale factor for addressing elements in the storage
+     * Reports the scale factor for addressing elements in the storage
      * allocation of a given array class.  However, arrays of "narrow" types
      * will generally not work properly with accessors like {@link
      * #getByte(Object, long)}, so the scale factor for such classes is reported
@@ -576,7 +573,7 @@
             = theUnsafe.arrayIndexScale(Object[].class);
 
     /**
-     * Report the size in bytes of a native pointer, as stored via {@link
+     * Reports the size in bytes of a native pointer, as stored via {@link
      * #putAddress}.  This value will be either 4 or 8.  Note that the sizes of
      * other primitive types (as stored in native memory blocks) is determined
      * fully by their information content.
@@ -587,7 +584,7 @@
     public static final int ADDRESS_SIZE = theUnsafe.addressSize();
 
     /**
-     * Report the size in bytes of a native memory page (whatever that is).
+     * Reports the size in bytes of a native memory page (whatever that is).
      * This value will always be a power of two.
      */
     public native int pageSize();
@@ -596,7 +593,7 @@
     /// random trusted operations from JNI:
 
     /**
-     * Tell the VM to define a class, without security checks.  By default, the
+     * Tells the VM to define a class, without security checks.  By default, the
      * class loader and protection domain come from the caller's class.
      */
     public native Class<?> defineClass(String name, byte[] b, int off, int len,
@@ -604,7 +601,7 @@
                                        ProtectionDomain protectionDomain);
 
     /**
-     * Define a class but do not make it known to the class loader or system dictionary.
+     * Defines a class but does not make it known to the class loader or system dictionary.
      * <p>
      * For each CP entry, the corresponding CP patch must either be null or have
      * the a format that matches its tag:
@@ -621,38 +618,38 @@
      */
     public native Class<?> defineAnonymousClass(Class<?> hostClass, byte[] data, Object[] cpPatches);
 
-
-    /** Allocate an instance but do not run any constructor.
-        Initializes the class if it has not yet been. */
+    /**
+     * Allocates an instance but does not run any constructor.
+     * Initializes the class if it has not yet been.
+     */
     public native Object allocateInstance(Class<?> cls)
         throws InstantiationException;
 
-    /** Throw the exception without telling the verifier. */
+    /** Throws the exception without telling the verifier. */
     public native void throwException(Throwable ee);
 
-
     /**
-     * Atomically update Java variable to <tt>x</tt> if it is currently
-     * holding <tt>expected</tt>.
-     * @return <tt>true</tt> if successful
+     * Atomically updates Java variable to {@code x} if it is currently
+     * holding {@code expected}.
+     * @return {@code true} if successful
      */
     public final native boolean compareAndSwapObject(Object o, long offset,
                                                      Object expected,
                                                      Object x);
 
     /**
-     * Atomically update Java variable to <tt>x</tt> if it is currently
-     * holding <tt>expected</tt>.
-     * @return <tt>true</tt> if successful
+     * Atomically updates Java variable to {@code x} if it is currently
+     * holding {@code expected}.
+     * @return {@code true} if successful
      */
     public final native boolean compareAndSwapInt(Object o, long offset,
                                                   int expected,
                                                   int x);
 
     /**
-     * Atomically update Java variable to <tt>x</tt> if it is currently
-     * holding <tt>expected</tt>.
-     * @return <tt>true</tt> if successful
+     * Atomically updates Java variable to {@code x} if it is currently
+     * holding {@code expected}.
+     * @return {@code true} if successful
      */
     public final native boolean compareAndSwapLong(Object o, long offset,
                                                    long expected,
@@ -736,28 +733,28 @@
     public native void    putOrderedLong(Object o, long offset, long x);
 
     /**
-     * Unblock the given thread blocked on <tt>park</tt>, or, if it is
-     * not blocked, cause the subsequent call to <tt>park</tt> not to
+     * Unblocks the given thread blocked on {@code park}, or, if it is
+     * not blocked, causes the subsequent call to {@code park} not to
      * block.  Note: this operation is "unsafe" solely because the
      * caller must somehow ensure that the thread has not been
      * destroyed. Nothing special is usually required to ensure this
      * when called from Java (in which there will ordinarily be a live
      * reference to the thread) but this is not nearly-automatically
      * so when calling from native code.
+     *
      * @param thread the thread to unpark.
-     *
      */
     public native void unpark(Object thread);
 
     /**
-     * Block current thread, returning when a balancing
-     * <tt>unpark</tt> occurs, or a balancing <tt>unpark</tt> has
+     * Blocks current thread, returning when a balancing
+     * {@code unpark} occurs, or a balancing {@code unpark} has
      * already occurred, or the thread is interrupted, or, if not
      * absolute and time is not zero, the given time nanoseconds have
      * elapsed, or if absolute, the given deadline in milliseconds
      * since Epoch has passed, or spuriously (i.e., returning for no
      * "reason"). Note: This operation is in the Unsafe class only
-     * because <tt>unpark</tt> is, so it would be strange to place it
+     * because {@code unpark} is, so it would be strange to place it
      * elsewhere.
      */
     public native void park(boolean isAbsolute, long time);
@@ -765,8 +762,8 @@
     /**
      * Gets the load average in the system run queue assigned
      * to the available processors averaged over various periods of time.
-     * This method retrieves the given <tt>nelem</tt> samples and
-     * assigns to the elements of the given <tt>loadavg</tt> array.
+     * This method retrieves the given {@code nelem} samples and
+     * assigns to the elements of the given {@code loadavg} array.
      * The system imposes a maximum of 3 samples, representing
      * averages over the last 1,  5,  and  15 minutes, respectively.
      *
@@ -784,8 +781,8 @@
 
     /**
      * Atomically adds the given value to the current value of a field
-     * or array element within the given object <code>o</code>
-     * at the given <code>offset</code>.
+     * or array element within the given object {@code o}
+     * at the given {@code offset}.
      *
      * @param o object/array to update the field/element in
      * @param offset field/element offset
@@ -803,8 +800,8 @@
 
     /**
      * Atomically adds the given value to the current value of a field
-     * or array element within the given object <code>o</code>
-     * at the given <code>offset</code>.
+     * or array element within the given object {@code o}
+     * at the given {@code offset}.
      *
      * @param o object/array to update the field/element in
      * @param offset field/element offset
@@ -822,8 +819,8 @@
 
     /**
      * Atomically exchanges the given value with the current value of
-     * a field or array element within the given object <code>o</code>
-     * at the given <code>offset</code>.
+     * a field or array element within the given object {@code o}
+     * at the given {@code offset}.
      *
      * @param o object/array to update the field/element in
      * @param offset field/element offset
@@ -841,8 +838,8 @@
 
     /**
      * Atomically exchanges the given value with the current value of
-     * a field or array element within the given object <code>o</code>
-     * at the given <code>offset</code>.
+     * a field or array element within the given object {@code o}
+     * at the given {@code offset}.
      *
      * @param o object/array to update the field/element in
      * @param offset field/element offset
@@ -861,7 +858,7 @@
     /**
      * Atomically exchanges the given reference value with the current
      * reference value of a field or array element within the given
-     * object <code>o</code> at the given <code>offset</code>.
+     * object {@code o} at the given {@code offset}.
      *
      * @param o object/array to update the field/element in
      * @param offset field/element offset
--- a/jdk/src/java.base/share/classes/sun/net/www/protocol/https/AbstractDelegateHttpsURLConnection.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/sun/net/www/protocol/https/AbstractDelegateHttpsURLConnection.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -244,7 +244,9 @@
     public java.security.cert.Certificate[] getServerCertificates()
             throws SSLPeerUnverifiedException {
         if (cachedResponse != null) {
-            List<java.security.cert.Certificate> l = ((SecureCacheResponse)cachedResponse).getServerCertificateChain();
+            List<java.security.cert.Certificate> l =
+                    ((SecureCacheResponse)cachedResponse)
+                            .getServerCertificateChain();
             if (l == null) {
                 return null;
             } else {
@@ -262,7 +264,12 @@
     /**
      * Returns the server's X.509 certificate chain, or null if
      * the server did not authenticate.
+     *
+     * @deprecated This method returns the deprecated
+     *  {@code javax.security.cert.X509Certificate} type.
+     *  Use {@code getServerCertificates()} instead.
      */
+    @Deprecated
     public javax.security.cert.X509Certificate[] getServerCertificateChain()
             throws SSLPeerUnverifiedException {
         if (cachedResponse != null) {
@@ -271,7 +278,7 @@
         if (http == null) {
             throw new IllegalStateException("connection not yet open");
         } else {
-            return ((HttpsClient)http).getServerCertificateChain ();
+            return ((HttpsClient)http).getServerCertificateChain();
         }
     }
 
--- a/jdk/src/java.base/share/classes/sun/net/www/protocol/https/HttpsClient.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/sun/net/www/protocol/https/HttpsClient.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -699,7 +699,12 @@
     /**
      * Returns the X.509 certificate chain with which the server
      * authenticated itself, or null if the server did not authenticate.
+     *
+     * @deprecated This method returns the deprecated
+     *  {@code javax.security.cert.X509Certificate} type.
+     *  Use {@code getServerCertificates()} instead.
      */
+    @Deprecated
     javax.security.cert.X509Certificate [] getServerCertificateChain()
             throws SSLPeerUnverifiedException
     {
--- a/jdk/src/java.base/share/classes/sun/net/www/protocol/https/HttpsURLConnectionImpl.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/sun/net/www/protocol/https/HttpsURLConnectionImpl.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -204,7 +204,12 @@
      * NOTE: This method is not necessary for the version of this class
      * implementing javax.net.ssl.HttpsURLConnection, but provided for
      * compatibility with the com.sun.net.ssl.HttpsURLConnection version.
+     *
+     * @deprecated This method returns the deprecated
+     *  {@code javax.security.cert.X509Certificate} type.
+     *  Use {@code getServerCertificates()} instead.
      */
+    @Deprecated
     public javax.security.cert.X509Certificate[] getServerCertificateChain() {
         try {
             return delegate.getServerCertificateChain();
--- a/jdk/src/java.base/share/classes/sun/security/ssl/ClientHandshaker.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/ClientHandshaker.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1569,6 +1569,9 @@
     /*
      * Returns the subject alternative name of the specified type in the
      * subjectAltNames extension of a certificate.
+     *
+     * Note that only those subjectAltName types that use String data
+     * should be passed into this function.
      */
     private static Collection<String> getSubjectAltNames(
             Collection<List<?>> subjectAltNames, int type) {
--- a/jdk/src/java.base/share/classes/sun/security/ssl/SSLSessionImpl.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/classes/sun/security/ssl/SSLSessionImpl.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1996, 2014, 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
@@ -464,8 +464,13 @@
      *
      * @return array of peer X.509 certs, with the peer's own cert
      *  first in the chain, and with the "root" CA last.
+     *
+     * @deprecated This method returns the deprecated
+     *  {@code javax.security.cert.X509Certificate} type.
+     *  Use {@code getPeerCertificates()} instead.
      */
     @Override
+    @Deprecated
     public javax.security.cert.X509Certificate[] getPeerCertificateChain()
             throws SSLPeerUnverifiedException {
         //
--- a/jdk/src/java.base/share/native/libjli/manifest_info.h	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/native/libjli/manifest_info.h	Wed Mar 11 08:30:40 2015 -0700
@@ -32,13 +32,16 @@
  * Zip file header signatures
  */
 #define SIGSIZ 4                    /* size of all header signatures */
-#define LOCSIG 0x04034b50L          /* "PK\003\004" */
-#define EXTSIG 0x08074b50L          /* "PK\007\008" */
-#define CENSIG 0x02014b50L          /* "PK\001\002" */
-#define ENDSIG 0x06054b50L          /* "PK\005\006" */
 
-#define ZIP64_ENDSIG 0x06064b50L    /* "PK\006\006" */
-#define ZIP64_LOCSIG 0x07064b50L    /* "PK\006\007" */
+#define PKZIP_SIGNATURE_AT(p, b2, b3) \
+  (((p)[0] == 'P') & ((p)[1] == 'K') & ((p)[2] == b2) & ((p)[3] == b3))
+#define CENSIG_AT(p)       PKZIP_SIGNATURE_AT(p, 1, 2)
+#define LOCSIG_AT(p)       PKZIP_SIGNATURE_AT(p, 3, 4)
+#define ENDSIG_AT(p)       PKZIP_SIGNATURE_AT(p, 5, 6)
+#define EXTSIG_AT(p)       PKZIP_SIGNATURE_AT(p, 7, 8)
+#define ZIP64_ENDSIG_AT(p) PKZIP_SIGNATURE_AT(p, 6, 6)
+#define ZIP64_LOCSIG_AT(p) PKZIP_SIGNATURE_AT(p, 6, 7)
+
 /*
  * Header sizes including signatures
  */
--- a/jdk/src/java.base/share/native/libjli/parse_manifest.c	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/native/libjli/parse_manifest.c	Wed Mar 11 08:30:40 2015 -0700
@@ -138,7 +138,7 @@
         return -1;
     if ((bytes = read(fd, ep, ZIP64_LOCHDR)) < 0)
         return -1;
-    if (GETSIG(ep) == ZIP64_LOCSIG)
+    if (ZIP64_LOCSIG_AT(ep))
        return end64pos;
     return -1;
 }
@@ -176,7 +176,7 @@
         return (-1);
     if ((bytes = read(fd, eb, ENDHDR)) < 0)
         return (-1);
-    if (GETSIG(eb) == ENDSIG) {
+    if (ENDSIG_AT(eb)) {
         return haveZIP64(eb) ? find_end64(fd, eb, pos) : pos;
     }
 
@@ -200,14 +200,11 @@
 
     /*
      * Search backwards from the end of file stopping when the END header
-     * signature is found. (The first condition of the "if" is just a
-     * fast fail, because the GETSIG macro isn't always cheap.  The
-     * final condition protects against false positives.)
+     * signature is found.
      */
     endpos = &buffer[bytes];
     for (cp = &buffer[bytes - ENDHDR]; cp >= &buffer[0]; cp--)
-        if ((*cp == (ENDSIG & 0xFF)) && (GETSIG(cp) == ENDSIG) &&
-          (cp + ENDHDR + ENDCOM(cp) == endpos)) {
+        if (ENDSIG_AT(cp) && (cp + ENDHDR + ENDCOM(cp) == endpos)) {
             (void) memcpy(eb, cp, ENDHDR);
             free(buffer);
             pos = flen - (endpos - cp);
@@ -267,7 +264,7 @@
         if ((bytes = read(fd, buffer, MINREAD)) < 0) {
             return (-1);
         }
-        if (GETSIG(buffer) != ZIP64_ENDSIG) {
+        if (!ZIP64_ENDSIG_AT(buffer)) {
             return -1;
         }
         if ((offset = ZIP64_ENDOFF(buffer)) < (jlong)0) {
@@ -356,7 +353,7 @@
      * Loop through the Central Directory Headers. Note that a valid zip/jar
      * must have an ENDHDR (with ENDSIG) after the Central Directory.
      */
-    while (GETSIG(p) == CENSIG) {
+    while (CENSIG_AT(p)) {
 
         /*
          * If a complete header isn't in the buffer, shift the contents
@@ -403,7 +400,7 @@
                 free(buffer);
                 return (-1);
             }
-            if (GETSIG(locbuf) != LOCSIG) {
+            if (!LOCSIG_AT(locbuf)) {
                 free(buffer);
                 return (-1);
             }
--- a/jdk/src/java.base/share/native/libzip/zip_util.c	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/native/libzip/zip_util.c	Wed Mar 11 08:30:40 2015 -0700
@@ -281,9 +281,9 @@
     return (cenpos >= 0 &&
             locpos >= 0 &&
             readFullyAt(zip->zfd, buf, sizeof(buf), cenpos) != -1 &&
-            GETSIG(buf) == CENSIG &&
+            CENSIG_AT(buf) &&
             readFullyAt(zip->zfd, buf, sizeof(buf), locpos) != -1 &&
-            GETSIG(buf) == LOCSIG);
+            LOCSIG_AT(buf));
 }
 
 /*
@@ -674,7 +674,7 @@
         method = CENHOW(cp);
         nlen   = CENNAM(cp);
 
-        if (GETSIG(cp) != CENSIG)
+        if (!CENSIG_AT(cp))
             ZIP_FORMAT_ERROR("invalid CEN header (bad signature)");
         if (CENFLG(cp) & 1)
             ZIP_FORMAT_ERROR("invalid CEN header (encrypted entry)");
@@ -827,10 +827,7 @@
 
     // Assumption, zfd refers to start of file. Trivially, reuse errbuf.
     if (readFully(zfd, errbuf, 4) != -1) {  // errors will be handled later
-        if (GETSIG(errbuf) == LOCSIG)
-            zip->locsig = JNI_TRUE;
-        else
-            zip->locsig = JNI_FALSE;
+        zip->locsig = LOCSIG_AT(errbuf) ? JNI_TRUE : JNI_FALSE;
     }
 
     len = zip->len = IO_Lseek(zfd, 0, SEEK_END);
@@ -1284,7 +1281,7 @@
             zip->msg = "error reading zip file";
             return -1;
         }
-        if (GETSIG(loc) != LOCSIG) {
+        if (!LOCSIG_AT(loc)) {
             zip->msg = "invalid LOC header (bad signature)";
             return -1;
         }
--- a/jdk/src/java.base/share/native/libzip/zip_util.h	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/share/native/libzip/zip_util.h	Wed Mar 11 08:30:40 2015 -0700
@@ -33,13 +33,14 @@
 /*
  * Header signatures
  */
-#define LOCSIG 0x04034b50L          /* "PK\003\004" */
-#define EXTSIG 0x08074b50L          /* "PK\007\008" */
-#define CENSIG 0x02014b50L          /* "PK\001\002" */
-#define ENDSIG 0x06054b50L          /* "PK\005\006" */
-
-#define ZIP64_ENDSIG 0x06064b50L    /* "PK\006\006" */
-#define ZIP64_LOCSIG 0x07064b50L    /* "PK\006\007" */
+#define PKZIP_SIGNATURE_AT(p, b2, b3) \
+  (((p)[0] == 'P') & ((p)[1] == 'K') & ((p)[2] == b2) & ((p)[3] == b3))
+#define CENSIG_AT(p)       PKZIP_SIGNATURE_AT(p, 1, 2)
+#define LOCSIG_AT(p)       PKZIP_SIGNATURE_AT(p, 3, 4)
+#define ENDSIG_AT(p)       PKZIP_SIGNATURE_AT(p, 5, 6)
+#define EXTSIG_AT(p)       PKZIP_SIGNATURE_AT(p, 7, 8)
+#define ZIP64_ENDSIG_AT(p) PKZIP_SIGNATURE_AT(p, 6, 6)
+#define ZIP64_LOCSIG_AT(p) PKZIP_SIGNATURE_AT(p, 6, 7)
 
 /*
  * Header sizes including signatures
--- a/jdk/src/java.base/unix/native/launcher/jexec.c	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/unix/native/launcher/jexec.c	Wed Mar 11 08:30:40 2015 -0700
@@ -323,7 +323,7 @@
             result = BAD_MAGIC_MSG;
 
             // be sure the file is at least a ZIP file
-            if (GETSIG(buf) == LOCSIG) {
+            if (LOCSIG_AT(buf)) {
 
                 off_t flen  = LOCNAM(buf);
                 off_t xlen  = LOCEXT(buf);
--- a/jdk/src/java.base/windows/native/libnet/NetworkInterface_winXP.c	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/java.base/windows/native/libnet/NetworkInterface_winXP.c	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -28,6 +28,7 @@
 #include <winsock2.h>           /* needed for htonl */
 #include <iprtrmib.h>
 #include <assert.h>
+#include <limits.h>
 
 #include "java_net_NetworkInterface.h"
 #include "jni_util.h"
@@ -70,7 +71,7 @@
 
 #endif
 
-static int bufsize = 1024;
+static int bufsize = 4096;
 
 /*
  * return an array of IP_ADAPTER_ADDRESSES containing one element
@@ -102,7 +103,11 @@
     ret = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len);
 
     if (ret == ERROR_BUFFER_OVERFLOW) {
-        IP_ADAPTER_ADDRESSES * newAdapterInfo =
+        IP_ADAPTER_ADDRESSES * newAdapterInfo = NULL;
+        if (len  < (ULONG_MAX - bufsize)) {
+            len = len + bufsize;
+        }
+        newAdapterInfo =
             (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len);
         if (newAdapterInfo == NULL) {
             free(adapterInfo);
@@ -113,7 +118,6 @@
 
         adapterInfo = newAdapterInfo;
 
-        bufsize = len;
         ret = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len);
     }
 
@@ -176,7 +180,11 @@
     flags |= GAA_FLAG_INCLUDE_PREFIX;
     val = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len);
     if (val == ERROR_BUFFER_OVERFLOW) {
-        IP_ADAPTER_ADDRESSES * newAdapterInfo =
+        IP_ADAPTER_ADDRESSES * newAdapterInfo = NULL;
+        if (len  < (ULONG_MAX - bufsize)) {
+            len = len + bufsize;
+        }
+        newAdapterInfo =
                 (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len);
         if (newAdapterInfo == NULL) {
             free(adapterInfo);
@@ -187,7 +195,6 @@
 
         adapterInfo = newAdapterInfo;
 
-        bufsize = len;
         val = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len);
     }
 
--- a/jdk/src/jdk.localedata/share/classes/sun/text/resources/fi/FormatData_fi.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/src/jdk.localedata/share/classes/sun/text/resources/fi/FormatData_fi.java	Wed Mar 11 08:30:40 2015 -0700
@@ -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
@@ -295,8 +295,8 @@
             },
             { "DatePatterns",
                 new String[] {
-                    "d. MMMM'ta 'yyyy", // full date pattern
-                    "d. MMMM'ta 'yyyy", // long date pattern
+                    "d. MMMM yyyy", // full date pattern
+                    "d. MMMM yyyy", // long date pattern
                     "d.M.yyyy", // medium date pattern
                     "d.M.yyyy", // short date pattern
                 }
--- a/jdk/test/TEST.ROOT	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/test/TEST.ROOT	Wed Mar 11 08:30:40 2015 -0700
@@ -5,7 +5,7 @@
 keys=2d dnd i18n
 
 # Tests that must run in othervm mode
-othervm.dirs=java/awt java/beans javax/accessibility javax/imageio javax/sound javax/print javax/management com/sun/awt sun/awt sun/java2d sun/pisces
+othervm.dirs=java/awt java/beans javax/accessibility javax/imageio javax/sound javax/print javax/management com/sun/awt sun/awt sun/java2d sun/pisces javax/xml/jaxp/testng/validation
 
 # Tests that cannot run concurrently
 exclusiveAccess.dirs=java/rmi/Naming java/util/prefs sun/management/jmxremote sun/tools/jstatd sun/security/mscapi java/util/stream
--- a/jdk/test/java/lang/ProcessBuilder/Basic.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/test/java/lang/ProcessBuilder/Basic.java	Wed Mar 11 08:30:40 2015 -0700
@@ -26,7 +26,7 @@
  * @bug 4199068 4738465 4937983 4930681 4926230 4931433 4932663 4986689
  *      5026830 5023243 5070673 4052517 4811767 6192449 6397034 6413313
  *      6464154 6523983 6206031 4960438 6631352 6631966 6850957 6850958
- *      4947220 7018606 7034570 4244896 5049299 8003488 8054494
+ *      4947220 7018606 7034570 4244896 5049299 8003488 8054494 8058464
  * @summary Basic tests for Process and Environment Variable code
  * @run main/othervm/timeout=300 Basic
  * @run main/othervm/timeout=300 -Djdk.lang.Process.launchMechanism=fork Basic
@@ -941,6 +941,14 @@
                () -> pb.redirectOutput(Redirect.from(ifile)),
                () -> pb.redirectError(Redirect.from(ifile)));
 
+        THROWS(NullPointerException.class,
+                () -> pb.redirectInput((File)null),
+                () -> pb.redirectOutput((File)null),
+                () -> pb.redirectError((File)null),
+                () -> pb.redirectInput((Redirect)null),
+                () -> pb.redirectOutput((Redirect)null),
+                () -> pb.redirectError((Redirect)null));
+
         THROWS(IOException.class,
                // Input file does not exist
                () -> pb.start());
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/instrument/ManyMethodsBenchmarkAgent.java	Wed Mar 11 08:30:40 2015 -0700
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/**
+ * @test
+ * @bug 8046246
+ * @summary Tests and benchmarks the JVMTI RedefineClasses when a
+ *          single class (and its parent) contains many methods.
+ *
+ * @run build ManyMethodsBenchmarkApp ManyMethodsBenchmarkAgent
+ * @run shell MakeJAR3.sh ManyMethodsBenchmarkAgent 'Can-Retransform-Classes: true'
+ * @run main/othervm -javaagent:ManyMethodsBenchmarkAgent.jar ManyMethodsBenchmarkApp
+ */
+import java.lang.instrument.*;
+
+public class ManyMethodsBenchmarkAgent
+{
+    public  static boolean fail = false;
+    public  static boolean completed = false;
+    private static  Instrumentation instrumentation;
+
+    public static void
+    premain(    String agentArgs,
+                Instrumentation instrumentation) {
+        System.out.println("ManyMethodsBenchmarkAgent started");
+        ManyMethodsBenchmarkAgent.instrumentation = instrumentation;
+        System.out.println("ManyMethodsBenchmarkAgent finished");
+    }
+
+    static void instr() {
+        System.out.println("ManyMethodsBenchmarkAgent.instr started");
+
+        Class[] allClasses = instrumentation.getAllLoadedClasses();
+
+        for (int i = 0; i < allClasses.length; i++) {
+            Class klass = allClasses[i];
+            String name = klass.getName();
+            if (!name.equals("Base")) {
+                continue;
+            }
+            System.err.println("Instrumenting the class: " + klass);
+
+            try {
+                instrumentation.retransformClasses(klass);
+            } catch (Throwable e) {
+                System.err.println("Error: bad return from retransform: " + klass);
+                System.err.println("  ERROR: " + e);
+                fail = true;
+            }
+        }
+        completed = true;
+        System.out.println("ManyMethodsBenchmarkAgent.instr finished");
+    }
+
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/java/lang/instrument/ManyMethodsBenchmarkApp.java	Wed Mar 11 08:30:40 2015 -0700
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2015 Google Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+import java.io.File;
+import java.io.FileWriter;
+import java.io.PrintStream;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Type;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.Arrays;
+import java.util.List;
+import javax.tools.JavaCompiler;
+import javax.tools.StandardJavaFileManager;
+import javax.tools.ToolProvider;
+
+/**
+ * A manual benchmark of the JVMTI RedefineClasses when a
+ * single class (and its parent) contains many methods.
+ */
+public class ManyMethodsBenchmarkApp {
+     // Limit is 64k but we can not put such many as the CP limit is 32k.
+     // In practice, it means a real limit is much lower (less than 22000).
+    static final int METHOD_COUNT = 20000;
+
+    static Class<?> loadClassInNewClassLoader(String className) throws Exception {
+        URL[] urls = { new File(".").toURI().toURL() };
+        URLClassLoader ucl = new URLClassLoader(urls, null);
+        Class<?> klazz = Class.forName(className, true, ucl);
+        return klazz;
+    }
+
+    static void benchmarkClassOperations(String className) throws Exception {
+        Class<?> klazz = loadClassInNewClassLoader(className);
+
+        Method[] methods = klazz.getDeclaredMethods();
+        if (methods.length != METHOD_COUNT) {
+            throw new AssertionError("unexpected method count: " + methods.length +
+                                     " expected: " + METHOD_COUNT);
+        }
+
+        methods = klazz.getMethods();
+        // returned methods includes those inherited from Object
+        int objectMethodSlop = 100;
+        if (methods.length <= METHOD_COUNT ||
+            methods.length >= METHOD_COUNT + objectMethodSlop) {
+            throw new AssertionError("unexpected method count: " + methods.length);
+        }
+
+        // Invoke methods to make them appear in the constant pool cache
+        Object obj = klazz.newInstance();
+        Object[] args = new Object[0];
+        for (Method m: methods) {
+            try {
+                Class<?>[] types = m.getParameterTypes();
+                String     name  = m.getName();
+             // System.out.println("method: " + name + "; argno: " + types.length);
+                if (types.length == 0 && name.length() == 2 && name.startsWith("f")) {
+                    m.invoke(obj, args);
+                }
+            } catch (InvocationTargetException ex) {
+                ex.printStackTrace();
+            }
+        }
+    }
+
+    public static void main(String[] args) throws Exception {
+        System.out.println("test started: ManyMethodsBenchmarkApp");
+
+        // Create source files with many methods
+        File base = new File("Base.java");
+        try (FileWriter fw = new FileWriter(base)) {
+            fw.write("public class Base {\n");
+            final int L = 10;
+            // Each of the first L methods makes calls to its own chunk of METHOD_COUNT/L methods
+            for (int k = 0; k < L; k++) {
+                fw.write("    public void f" + k + "() {\n");
+                int shift = (k == 0) ? L : 0;
+                for (int i = (k * (METHOD_COUNT/L)) + shift; i < (k + 1) * METHOD_COUNT/L; i++) {
+                    fw.write("        f" + i + "();\n");
+                }
+                fw.write("    }\n");
+            }
+
+            // The rest of (METHOD_COUNT - L) methods have empty body
+            for (int i = L; i < METHOD_COUNT; i++) {
+                fw.write("    public static void f" + i + "() {}\n");
+            }
+            fw.write("}\n");
+        }
+
+        // Compile the generated source files.
+        JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+        List<File> files = Arrays.asList(new File[] { base });
+        try (StandardJavaFileManager fileManager =
+             compiler.getStandardFileManager(null, null, null)) {
+            compiler.getTask(null, fileManager, null, null, null,
+                fileManager.getJavaFileObjectsFromFiles(files))
+                .call();
+        }
+
+        benchmarkClassOperations("Base");
+
+        ManyMethodsBenchmarkAgent.instr();
+
+        // Cleanup
+        base.delete();
+        new File("Base.class").delete();
+        if (!ManyMethodsBenchmarkAgent.completed) {
+            throw new Exception("ERROR: ManyMethodsBenchmarkAgent did not complete.");
+        }
+
+        if (ManyMethodsBenchmarkAgent.fail) {
+            throw new Exception("ERROR: ManyMethodsBenchmarkAgent failed.");
+        } else {
+            System.out.println("ManyMethodsBenchmarkAgent succeeded.");
+        }
+        System.out.println("test finished: ManyMethodsBenchmarkApp");
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/sun/text/resources/Format/Bug8074791.java	Wed Mar 11 08:30:40 2015 -0700
@@ -0,0 +1,69 @@
+/*
+ * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8074791
+ * @summary Make sure that Finnish month names are correct in formatted text.
+ */
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.GregorianCalendar;
+import java.util.Locale;
+import static java.text.DateFormat.*;
+import static java.util.Calendar.JANUARY;
+
+public class Bug8074791 {
+    private static Locale FINNISH = new Locale("fi");
+    private static String JAN_FORMAT = "tammikuuta";
+    private static String JAN_STANDALONE = "tammikuu";
+
+    public static void main(String[] arg) {
+        int errors = 0;
+
+        DateFormat df = DateFormat.getDateInstance(LONG, FINNISH);
+        Date jan20 = new GregorianCalendar(2015, JANUARY, 20).getTime();
+        String str = df.format(jan20).toString();
+        // Extract the month name (locale data dependent)
+        String month = str.replaceAll(".+\\s([a-z]+)\\s\\d+$", "$1");
+        if (!month.equals(JAN_FORMAT)) {
+            errors++;
+            System.err.println("wrong format month name: got '" + month
+                               + "', expected '" + JAN_FORMAT + "'");
+        }
+
+        SimpleDateFormat sdf = new SimpleDateFormat("LLLL", FINNISH); // stand-alone month name
+        month = sdf.format(jan20);
+        if (!month.equals(JAN_STANDALONE)) {
+            errors++;
+            System.err.println("wrong stand-alone month name: got '" + month
+                               + "', expected '" + JAN_STANDALONE + "'");
+        }
+
+        if (errors > 0) {
+            throw new RuntimeException();
+        }
+    }
+}
--- a/jdk/test/sun/text/resources/LocaleData	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/test/sun/text/resources/LocaleData	Wed Mar 11 08:30:40 2015 -0700
@@ -8273,3 +8273,9 @@
 FormatData/zh/MonthNarrows/10=11
 FormatData/zh/MonthNarrows/11=12
 FormatData/zh/MonthNarrows/12=
+
+# bug #8074791
+FormatData/fi/DatePatterns/0=d. MMMM yyyy
+FormatData/fi/DatePatterns/1=d. MMMM yyyy
+FormatData/fi/DatePatterns/2=d.M.yyyy
+FormatData/fi/DatePatterns/3=d.M.yyyy
--- a/jdk/test/sun/text/resources/LocaleDataTest.java	Wed Mar 11 16:48:43 2015 +0300
+++ b/jdk/test/sun/text/resources/LocaleDataTest.java	Wed Mar 11 08:30:40 2015 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 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,7 +36,7 @@
  *      6919624 6998391 7019267 7020960 7025837 7020583 7036905 7066203 7101495
  *      7003124 7085757 7028073 7171028 7189611 8000983 7195759 8004489 8006509
  *      7114053 7074882 7040556 8013836 8021121 6192407 6931564 8027695 8017142
- *      8037343 8055222 8042126
+ *      8037343 8055222 8042126 8074791
  * @summary Verify locale data
  *
  */