--- 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 {@code final}.)
*
- * (It may assist compilers to make the local variable be
- * <code>final</code>.)
- *
- * @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
*
*/