changeset 12567:db8272cb8c99 jdk8u172-b02

Merge
author robm
date Mon, 08 Jan 2018 10:18:59 -0800
parents 73a9fef98b93 a0932d9f577d
children 51b6cc7fbd98 2670e19d88e2
files
diffstat 7 files changed, 262 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/make/lib/ServiceabilityLibraries.gmk	Tue Jan 02 17:02:24 2018 -0800
+++ b/make/lib/ServiceabilityLibraries.gmk	Mon Jan 08 10:18:59 2018 -0800
@@ -290,6 +290,10 @@
 BUILD_LIBMANAGEMENT_SRC += $(JDK_TOPDIR)/src/share/native/sun/management \
     $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS_API_DIR)/native/sun/management
 
+ifeq ($(OPENJDK_TARGET_OS),aix)
+  BUILD_LIBMANAGEMENT_SRC += $(JDK_TOPDIR)/src/aix/native/sun/management
+endif
+
 BUILD_LIBMANAGEMENT_EXCLUDES :=
 
 BUILD_LIBMANAGEMENT_CFLAGS += -I$(JDK_TOPDIR)/src/share/native/sun/management
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/aix/native/sun/management/AixOperatingSystem.c	Mon Jan 08 10:18:59 2018 -0800
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2011, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2017 SAP SE. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+#include "sun_management_OperatingSystemImpl.h"
+
+JNIEXPORT jdouble JNICALL
+Java_sun_management_OperatingSystemImpl_getSystemCpuLoad
+(JNIEnv *env, jobject dummy)
+{
+  return -1.0;
+}
+
+JNIEXPORT jdouble JNICALL
+Java_sun_management_OperatingSystemImpl_getProcessCpuLoad
+(JNIEnv *env, jobject dummy)
+{
+  return -1.0;
+}
--- a/src/share/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java	Tue Jan 02 17:02:24 2018 -0800
+++ b/src/share/classes/sun/reflect/generics/reflectiveObjects/ParameterizedTypeImpl.java	Mon Jan 08 10:18:59 2018 -0800
@@ -212,7 +212,7 @@
             else
                 sb.append(ownerType.toString());
 
-            sb.append(".");
+            sb.append("$");
 
             if (ownerType instanceof ParameterizedTypeImpl) {
                 // Find simple name of nested type by removing the
@@ -220,7 +220,7 @@
                 sb.append(rawType.getName().replace( ((ParameterizedTypeImpl)ownerType).rawType.getName() + "$",
                                          ""));
             } else
-                sb.append(rawType.getName());
+               sb.append(rawType.getSimpleName());
         } else
             sb.append(rawType.getName());
 
--- a/src/share/classes/sun/security/tools/KeyStoreUtil.java	Tue Jan 02 17:02:24 2018 -0800
+++ b/src/share/classes/sun/security/tools/KeyStoreUtil.java	Mon Jan 08 10:18:59 2018 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2017, 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
@@ -63,8 +63,9 @@
      * MSCAPI KeyStores
      */
     public static boolean isWindowsKeyStore(String storetype) {
-        return storetype.equalsIgnoreCase("Windows-MY")
-                || storetype.equalsIgnoreCase("Windows-ROOT");
+        return storetype != null
+                && (storetype.equalsIgnoreCase("Windows-MY")
+                    || storetype.equalsIgnoreCase("Windows-ROOT"));
     }
 
     /**
--- a/src/share/classes/sun/security/tools/keytool/Main.java	Tue Jan 02 17:02:24 2018 -0800
+++ b/src/share/classes/sun/security/tools/keytool/Main.java	Mon Jan 08 10:18:59 2018 -0800
@@ -462,12 +462,12 @@
                 passwords.add(storePass);
             } else if (collator.compare(flags, "-storetype") == 0 ||
                     collator.compare(flags, "-deststoretype") == 0) {
-                storetype = args[++i];
+                storetype = KeyStoreUtil.niceStoreTypeName(args[++i]);
             } else if (collator.compare(flags, "-srcstorepass") == 0) {
                 srcstorePass = getPass(modifier, args[++i]);
                 passwords.add(srcstorePass);
             } else if (collator.compare(flags, "-srcstoretype") == 0) {
-                srcstoretype = args[++i];
+                srcstoretype = KeyStoreUtil.niceStoreTypeName(args[++i]);
             } else if (collator.compare(flags, "-srckeypass") == 0) {
                 srckeyPass = getPass(modifier, args[++i]);
                 passwords.add(srckeyPass);
@@ -592,16 +592,6 @@
      * Execute the commands.
      */
     void doCommands(PrintStream out) throws Exception {
-        if (storetype == null) {
-            storetype = KeyStore.getDefaultType();
-        }
-        storetype = KeyStoreUtil.niceStoreTypeName(storetype);
-
-        if (srcstoretype == null) {
-            srcstoretype = KeyStore.getDefaultType();
-        }
-        srcstoretype = KeyStoreUtil.niceStoreTypeName(srcstoretype);
-
         if (P11KEYSTORE.equalsIgnoreCase(storetype) ||
                 KeyStoreUtil.isWindowsKeyStore(storetype)) {
             token = true;
@@ -626,11 +616,6 @@
                         (".storepasswd.and.keypasswd.commands.not.supported.if.storetype.is.{0}"), storetype));
         }
 
-        if (P12KEYSTORE.equalsIgnoreCase(storetype) && command == KEYPASSWD) {
-            throw new UnsupportedOperationException(rb.getString
-                        (".keypasswd.commands.not.supported.if.storetype.is.PKCS12"));
-        }
-
         if (token && (keyPass != null || newPass != null || destKeyPass != null)) {
             throw new IllegalArgumentException(MessageFormat.format(rb.getString
                 (".keypass.and.new.can.not.be.specified.if.storetype.is.{0}"), storetype));
@@ -802,6 +787,9 @@
         }
 
         // Create new keystore
+        if (storetype == null) {
+            storetype = KeyStore.getDefaultType();
+        }
         if (providerName == null) {
             keyStore = KeyStore.getInstance(storetype);
         } else {
@@ -839,6 +827,11 @@
             }
         }
 
+        if (P12KEYSTORE.equalsIgnoreCase(storetype) && command == KEYPASSWD) {
+            throw new UnsupportedOperationException(rb.getString
+                    (".keypasswd.commands.not.supported.if.storetype.is.PKCS12"));
+        }
+
         // All commands that create or modify the keystore require a keystore
         // password.
 
@@ -2016,6 +2009,9 @@
 
         KeyStore store;
         try {
+            if (srcstoretype == null) {
+                srcstoretype = KeyStore.getDefaultType();
+            }
             if (srcProviderName == null) {
                 store = KeyStore.getInstance(srcstoretype);
             } else {
@@ -2637,12 +2633,12 @@
                     if (rfc) {
                         dumpCert(cert, out);
                     } else {
-                        out.println("Certificate #" + i++);
+                        out.println("Certificate #" + i);
                         out.println("====================================");
                         printX509Cert((X509Certificate)cert, out);
                         out.println();
                     }
-                    checkWeak(oneInMany(rb.getString("the.certificate"), i, chain.size()), cert);
+                    checkWeak(oneInMany(rb.getString("the.certificate"), i++, chain.size()), cert);
                 } catch (Exception e) {
                     if (debug) {
                         e.printStackTrace();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/java/lang/reflect/Generics/TestGenericReturnTypeToString.java	Mon Jan 08 10:18:59 2018 -0800
@@ -0,0 +1,135 @@
+/*
+ * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 8054213
+ * @summary Check that toString method works properly for generic return type
+ * obtained via reflection
+ * @run main TestGenericReturnTypeToString
+ */
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.Method;
+import java.util.List;
+
+public class TestGenericReturnTypeToString {
+
+    public static void main(String[] args) {
+        boolean hasFailures = false;
+        for (Method method : TestGenericReturnTypeToString.class.getMethods()) {
+            if (method.isAnnotationPresent(ExpectedGenericString.class)) {
+                ExpectedGenericString es = method.getAnnotation
+                        (ExpectedGenericString.class);
+                String result = method.getGenericReturnType().toString();
+                if (!es.value().equals(result)) {
+                    hasFailures = true;
+                    System.err.println("Unexpected result of " +
+                            "getGenericReturnType().toString() " +
+                            " for " + method.getName()
+                            + " expected: " + es.value() + " actual: " + result);
+                }
+            }
+            if (hasFailures) {
+                throw new RuntimeException("Test failed");
+            }
+        }
+    }
+
+    @ExpectedGenericString("TestGenericReturnTypeToString$" +
+          "FirstInnerClassGeneric<Dummy>$SecondInnerClassGeneric<Dummy>")
+    public FirstInnerClassGeneric<Dummy>.SecondInnerClassGeneric<Dummy> foo1() {
+        return null;
+    }
+
+    @ExpectedGenericString("TestGenericReturnTypeToString$" +
+          "FirstInnerClassGeneric<Dummy>$SecondInnerClass")
+    public FirstInnerClassGeneric<Dummy>.SecondInnerClass foo2() {
+        return null;
+    }
+
+    @ExpectedGenericString("TestGenericReturnTypeToString$" +
+          "FirstInnerClass$SecondInnerClassGeneric<Dummy>")
+    public FirstInnerClass.SecondInnerClassGeneric<Dummy> foo3() {
+        return null;
+    }
+
+    @ExpectedGenericString("class TestGenericReturnTypeToString$" +
+          "FirstInnerClass$SecondInnerClass")
+    public FirstInnerClass.SecondInnerClass foo4() {
+        return null;
+    }
+
+    @ExpectedGenericString(
+          "java.util.List<java.lang.String>")
+    public java.util.List<java.lang.String> foo5() {
+        return null;
+    }
+
+    @ExpectedGenericString("interface TestGenericReturnTypeToString$" +
+          "FirstInnerClass$Interface")
+    public FirstInnerClass.Interface foo6() {
+        return null;
+    }
+
+    @ExpectedGenericString("TestGenericReturnTypeToString$" +
+          "FirstInnerClass$InterfaceGeneric<Dummy>")
+    public FirstInnerClass.InterfaceGeneric<Dummy> foo7() {
+        return null;
+    }
+
+    public static class FirstInnerClass {
+
+        public class SecondInnerClassGeneric<T> {
+        }
+
+        public class SecondInnerClass {
+        }
+
+        interface Interface {
+        }
+
+        interface InterfaceGeneric<T> {
+        }
+    }
+
+    public class FirstInnerClassGeneric<T> {
+
+        public class SecondInnerClassGeneric<T> {
+        }
+
+        public class SecondInnerClass {
+        }
+    }
+}
+
+@Retention(RetentionPolicy.RUNTIME)
+@interface ExpectedGenericString {
+    String value();
+}
+
+class Dummy {
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/sun/security/tools/keytool/RealType.java	Mon Jan 08 10:18:59 2018 -0800
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2017, 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 8192987
+ * @summary keytool should remember real storetype if it is not provided
+ * @library /lib/testlibrary
+ * @run main/othervm RealType
+ */
+
+import jdk.testlibrary.SecurityTools;
+import jdk.testlibrary.OutputAnalyzer;
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+public class RealType {
+
+    public static void main(String[] args) throws Throwable {
+
+        kt("-genkeypair -alias a -dname CN=A -keypass changeit -storetype jks")
+                .shouldHaveExitValue(0);
+
+        // -keypasswd command should be allowed on JKS
+        kt("-keypasswd -alias a -new t0ps3cr3t")
+                .shouldHaveExitValue(0);
+
+        Files.delete(Paths.get("ks"));
+
+        kt("-genkeypair -alias a -dname CN=A -keypass changeit -storetype pkcs12")
+                .shouldHaveExitValue(0);
+
+        // A pkcs12 keystore cannot be loaded as a JCEKS keystore
+        kt("-list -storetype jceks").shouldHaveExitValue(1);
+    }
+
+    static OutputAnalyzer kt(String arg) throws Exception {
+        return SecurityTools.keytool("-debug -keystore ks -storepass changeit " + arg);
+    }
+}