From ffe4b47d2053e08db86975d9176a68251b184685 Mon Sep 17 00:00:00 2001 From: Jaroslav Bachorik Date: Fri, 3 Apr 2015 15:39:38 +0200 Subject: [PATCH 01/36] 8075926: Add a sun.management.JMXConnectorServer perf counter to track its state Reviewed-by: duke --- .../share/classes/sun/management/Agent.java | 1 + .../sun/management/ConnectorAddressLink.java | 43 +++- .../bootstrap/JvmstatCountersTest.java | 13 +- .../startstop/JMXStatusPerfCountersTest.java | 188 ++++++++++++++++++ .../startstop/ManagementAgentJcmd.java | 36 ++++ 5 files changed, 274 insertions(+), 7 deletions(-) create mode 100644 jdk/test/sun/management/jmxremote/startstop/JMXStatusPerfCountersTest.java diff --git a/jdk/src/java.management/share/classes/sun/management/Agent.java b/jdk/src/java.management/share/classes/sun/management/Agent.java index ffb3105255e..e0b781dc71c 100644 --- a/jdk/src/java.management/share/classes/sun/management/Agent.java +++ b/jdk/src/java.management/share/classes/sun/management/Agent.java @@ -345,6 +345,7 @@ public class Agent { if (jmxServer != null) { ConnectorBootstrap.unexportRegistry(); + ConnectorAddressLink.unexportRemote(); // Attempt to stop already stopped agent // Don't cause any errors. diff --git a/jdk/src/java.management/share/classes/sun/management/ConnectorAddressLink.java b/jdk/src/java.management/share/classes/sun/management/ConnectorAddressLink.java index 893f11c1f46..4ec5ec799cc 100644 --- a/jdk/src/java.management/share/classes/sun/management/ConnectorAddressLink.java +++ b/jdk/src/java.management/share/classes/sun/management/ConnectorAddressLink.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,6 +27,7 @@ package sun.management; import java.io.IOException; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -45,9 +46,26 @@ import sun.management.counter.perf.PerfInstrumentation; * @since 1.5 */ public class ConnectorAddressLink { + /** + * A simple wrapper for the perf-counter backing {@linkplain ByteBuffer} + */ + private static final class PerfHandle { + private ByteBuffer bb; + + private PerfHandle(ByteBuffer bb) { + this.bb = bb.order(ByteOrder.nativeOrder()); + } + + private void putLong(long l) { + this.bb = bb.clear(); + this.bb.asLongBuffer().put(l); + } + } private static final String CONNECTOR_ADDRESS_COUNTER = "sun.management.JMXConnectorServer.address"; + private static final String REMOTE_CONNECTOR_STATE_COUNTER = + "sun.management.JMXConnectorServer.remote.enabled"; /* * The format of the jvmstat counters representing the properties of @@ -78,7 +96,9 @@ public class ConnectorAddressLink { * JMX remote connector counter (it will be incremented every * time a new out-of-the-box JMX remote connector is created). */ - private static AtomicInteger counter = new AtomicInteger(); + private static final AtomicInteger counter = new AtomicInteger(); + + private static PerfHandle remotePerfHandle = null; /** * Exports the specified connector address to the instrumentation buffer @@ -93,7 +113,17 @@ public class ConnectorAddressLink { } Perf perf = Perf.getPerf(); perf.createString( - CONNECTOR_ADDRESS_COUNTER, 1, Units.STRING.intValue(), address); + CONNECTOR_ADDRESS_COUNTER, 1, Units.STRING.intValue(), address); + } + + public static void unexportRemote() { + unexport(remotePerfHandle); + } + + private static void unexport(PerfHandle ph) { + if (ph != null) { + ph.putLong(-1L); + } } /** @@ -143,6 +173,13 @@ public class ConnectorAddressLink { perf.createString(REMOTE_CONNECTOR_COUNTER_PREFIX + index + "." + entry.getKey(), 1, Units.STRING.intValue(), entry.getValue()); } + if (remotePerfHandle != null) { + remotePerfHandle.putLong(index); + } else { + remotePerfHandle = new PerfHandle( + perf.createLong(REMOTE_CONNECTOR_STATE_COUNTER, 1, Units.NONE.intValue(), (long)index) + ); + } } /** diff --git a/jdk/test/sun/management/jmxremote/bootstrap/JvmstatCountersTest.java b/jdk/test/sun/management/jmxremote/bootstrap/JvmstatCountersTest.java index 277edb33e5f..80f74b37ce3 100644 --- a/jdk/test/sun/management/jmxremote/bootstrap/JvmstatCountersTest.java +++ b/jdk/test/sun/management/jmxremote/bootstrap/JvmstatCountersTest.java @@ -116,10 +116,10 @@ public class JvmstatCountersTest { throw new IllegalArgumentException("Test case 3 failed"); } for (String key : remoteData.keySet()) { - if (!key.startsWith("sun.management.JMXConnectorServer.0.")) { + if (!isKeyAcceptable(key)) { System.out.println("Test FAILED! The OOTB management " + "agent shouldn't publish anything which isn't " + - "related to the remote connector."); + "related to the remote connector (" + key + ")."); throw new IllegalArgumentException("Test case 3 failed"); } } @@ -165,10 +165,10 @@ public class JvmstatCountersTest { throw new IllegalArgumentException("Test case 4 failed"); } for (String key : remoteData2.keySet()) { - if (!key.startsWith("sun.management.JMXConnectorServer.0.")) { + if (!isKeyAcceptable(key)) { System.out.println("Test FAILED! The OOTB management " + "agent shouldn't publish anything which isn't " + - "related to the remote connector."); + "related to the remote connector (" + key + ")."); throw new IllegalArgumentException("Test case 4 failed"); } } @@ -184,4 +184,9 @@ public class JvmstatCountersTest { } System.out.println("Bye! Bye!"); } + + private static boolean isKeyAcceptable(String key) { + return key.startsWith("sun.management.JMXConnectorServer.0.") || + key.startsWith("sun.management.JMXConnectorServer.remote.enabled"); + } } diff --git a/jdk/test/sun/management/jmxremote/startstop/JMXStatusPerfCountersTest.java b/jdk/test/sun/management/jmxremote/startstop/JMXStatusPerfCountersTest.java new file mode 100644 index 00000000000..4d1eef69f50 --- /dev/null +++ b/jdk/test/sun/management/jmxremote/startstop/JMXStatusPerfCountersTest.java @@ -0,0 +1,188 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.IOException; +import java.net.BindException; +import java.util.Properties; +import java.util.function.Predicate; +import static org.testng.Assert.*; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.BeforeTest; +import org.testng.annotations.Test; + +import jdk.testlibrary.ProcessTools; + + +/** + * @test + * @bug 8075926 + * @summary Makes sure that the current management agent status is reflected + * in the related performance counters. + * @library /lib/testlibrary + * @build jdk.testlibrary.* PortAllocator TestApp ManagementAgentJcmd + * @run testng/othervm -XX:+UsePerfData JMXStatusPerfCountersTest + */ +public class JMXStatusPerfCountersTest { + private final static String TEST_APP_NAME = "TestApp"; + + private final static String REMOTE_STATUS_KEY = "sun.management.JMXConnectorServer.remote.enabled"; + + private static ProcessBuilder testAppPb; + private Process testApp; + + private ManagementAgentJcmd jcmd; + + @BeforeClass + public static void setupClass() throws Exception { + testAppPb = ProcessTools.createJavaProcessBuilder( + "-XX:+UsePerfData", + "-cp", System.getProperty("test.class.path"), + TEST_APP_NAME + ); + } + + @BeforeTest + public void setup() { + jcmd = new ManagementAgentJcmd(TEST_APP_NAME, false); + } + + @BeforeMethod + public void startTestApp() throws Exception { + testApp = ProcessTools.startProcess( + TEST_APP_NAME, testAppPb, + (Predicate)l->l.trim().equals("main enter") + ); + } + + @AfterMethod + public void stopTestApp() throws Exception { + testApp.getOutputStream().write(1); + testApp.getOutputStream().flush(); + testApp.waitFor(); + testApp = null; + } + + /** + * The 'sun.management.JMXConnectorServer.remote.enabled' counter must not be + * exported if the remote agent is not enabled. + * @throws Exception + */ + @Test + public void testNotInitializedRemote() throws Exception { + assertFalse( + getCounters().containsKey(REMOTE_STATUS_KEY), + "Unexpected occurrence of " + REMOTE_STATUS_KEY + " in perf counters" + ); + } + + /** + * After enabling the remote agent the 'sun.management.JMXConnectorServer.remote.enabled' + * counter will be exported with value of '0' - corresponding to the actual + * version of the associated remote connector perf counters. + * @throws Exception + */ + @Test + public void testRemoteEnabled() throws Exception { + while (true) { + try { + int[] ports = PortAllocator.allocatePorts(1); + jcmd.start( + "jmxremote.port=" + ports[0], + "jmxremote.authenticate=false", + "jmxremote.ssl=false" + ); + String v = getCounters().getProperty(REMOTE_STATUS_KEY); + assertNotNull(v); + assertEquals("0", v); + return; + } catch (BindException e) { + System.out.println("Failed to allocate ports. Retrying ..."); + } + } + } + + /** + * After disabling the remote agent the value of 'sun.management.JMXConnectorServer.remote.enabled' + * counter will become '-1'. + * @throws Exception + */ + @Test + public void testRemoteDisabled() throws Exception { + while (true) { + try { + int[] ports = PortAllocator.allocatePorts(1); + jcmd.start( + "jmxremote.port=" + ports[0], + "jmxremote.authenticate=false", + "jmxremote.ssl=false" + ); + jcmd.stop(); + String v = getCounters().getProperty(REMOTE_STATUS_KEY); + assertNotNull(v); + assertEquals("-1", v); + return; + } catch (BindException e) { + System.out.println("Failed to allocate ports. Retrying ..."); + } + } + } + + /** + * Each subsequent re-enablement of the remote agent must keep the value of + * 'sun.management.JMXConnectorServer.remote.enabled' counter in sync with + * the actual version of the associated remote connector perf counters. + * @throws Exception + */ + @Test + public void testRemoteReEnabled() throws Exception { + while (true) { + try { + int[] ports = PortAllocator.allocatePorts(1); + jcmd.start( + "jmxremote.port=" + ports[0], + "jmxremote.authenticate=false", + "jmxremote.ssl=false" + ); + jcmd.stop(); + jcmd.start( + "jmxremote.port=" + ports[0], + "jmxremote.authenticate=false", + "jmxremote.ssl=false" + ); + + String v = getCounters().getProperty(REMOTE_STATUS_KEY); + assertNotNull(v); + assertEquals("1", v); + return; + } catch (BindException e) { + System.out.println("Failed to allocate ports. Retrying ..."); + } + } + } + + private Properties getCounters() throws IOException, InterruptedException { + return jcmd.perfCounters("sun\\.management\\.JMXConnectorServer\\..*"); + } +} \ No newline at end of file diff --git a/jdk/test/sun/management/jmxremote/startstop/ManagementAgentJcmd.java b/jdk/test/sun/management/jmxremote/startstop/ManagementAgentJcmd.java index efee771cf4a..f273cd2ce4b 100644 --- a/jdk/test/sun/management/jmxremote/startstop/ManagementAgentJcmd.java +++ b/jdk/test/sun/management/jmxremote/startstop/ManagementAgentJcmd.java @@ -25,8 +25,10 @@ import java.net.BindException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Properties; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; +import java.util.regex.Pattern; import java.util.stream.Collectors; import sun.management.Agent; import sun.management.AgentConfigurationError; @@ -43,6 +45,7 @@ final class ManagementAgentJcmd { private static final String CMD_START = "ManagementAgent.start"; private static final String CMD_START_LOCAL = "ManagementAgent.start_local"; private static final String CMD_STATUS = "ManagementAgent.status"; + private static final String CMD_PRINTPERF = "PerfCounter.print"; private final String id; private final boolean verbose; @@ -62,6 +65,39 @@ final class ManagementAgentJcmd { return jcmd(); } + /** + * `jcmd PerfCounter.print` + * @return Returns the available performance counters with their values as + * {@linkplain Properties} instance + * @throws IOException + * @throws InterruptedException + */ + public Properties perfCounters() throws IOException, InterruptedException { + return perfCounters(".*"); + } + + /** + * `jcmd PerfCounter.print | grep {exp}>` + * @param regex Regular expression for including perf counters in the result + * @return Returns the matching performance counters with their values + * as {@linkplain Properties} instance + * @throws IOException + * @throws InterruptedException + */ + public Properties perfCounters(String regex) throws IOException, InterruptedException { + Pattern pat = Pattern.compile(regex); + Properties p = new Properties(); + for(String l : jcmd(CMD_PRINTPERF).split("\\n")) { + String[] kv = l.split("="); + if (kv.length > 1) { + if (pat.matcher(kv[0]).matches()) { + p.setProperty(kv[0], kv[1].replace("\"", "")); + } + } + } + return p; + } + /** * `jcmd ManagementAgent.stop` * @return The JCMD output From 15fffb90d7af3ef665886c0fcc6f777004e91971 Mon Sep 17 00:00:00 2001 From: Jaroslav Bachorik Date: Wed, 13 May 2015 10:17:38 +0200 Subject: [PATCH 02/36] 8046869: Several java/lang/instrument/PremainClass/* tests fail due to timeout Reviewed-by: sla --- .../java/lang/instrument/PremainClass/NoPremainAgentTest.java | 2 +- .../lang/instrument/PremainClass/ZeroArgPremainAgentTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/jdk/test/java/lang/instrument/PremainClass/NoPremainAgentTest.java b/jdk/test/java/lang/instrument/PremainClass/NoPremainAgentTest.java index 29bf5623352..bd64239320a 100644 --- a/jdk/test/java/lang/instrument/PremainClass/NoPremainAgentTest.java +++ b/jdk/test/java/lang/instrument/PremainClass/NoPremainAgentTest.java @@ -33,7 +33,7 @@ import jdk.testlibrary.Utils; * @modules java.management * @run build jdk.testlibrary.* DummyMain * @run shell ../MakeJAR3.sh NoPremainAgent - * @run main NoPremainAgentTest + * @run main/othervm -XX:-CreateCoredumpOnCrash NoPremainAgentTest */ public class NoPremainAgentTest { // Use a javaagent without the premain() function. diff --git a/jdk/test/java/lang/instrument/PremainClass/ZeroArgPremainAgentTest.java b/jdk/test/java/lang/instrument/PremainClass/ZeroArgPremainAgentTest.java index b879aa10f23..66633ea12d3 100644 --- a/jdk/test/java/lang/instrument/PremainClass/ZeroArgPremainAgentTest.java +++ b/jdk/test/java/lang/instrument/PremainClass/ZeroArgPremainAgentTest.java @@ -33,7 +33,7 @@ import jdk.testlibrary.Utils; * @modules java.management * @run build jdk.testlibrary.* DummyMain * @run shell ../MakeJAR3.sh ZeroArgPremainAgent - * @run main ZeroArgPremainAgentTest + * @run main/othervm -XX:-CreateCoredumpOnCrash ZeroArgPremainAgentTest */ public class ZeroArgPremainAgentTest { // Use a javaagent with a zero argument premain() function. From d7f44658949034f81aa01ab16c107be1a27be0ad Mon Sep 17 00:00:00 2001 From: Jaroslav Bachorik Date: Wed, 13 May 2015 10:17:49 +0200 Subject: [PATCH 03/36] 8029098: Exclude javax/management/remote/mandatory/notif/ListenerScaleTest.java from running on fastdebug builds Reviewed-by: sla, sjiang --- .../remote/mandatory/notif/ListenerScaleTest.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/jdk/test/javax/management/remote/mandatory/notif/ListenerScaleTest.java b/jdk/test/javax/management/remote/mandatory/notif/ListenerScaleTest.java index efebce3b365..0d7080e6b7d 100644 --- a/jdk/test/javax/management/remote/mandatory/notif/ListenerScaleTest.java +++ b/jdk/test/javax/management/remote/mandatory/notif/ListenerScaleTest.java @@ -21,12 +21,16 @@ * questions. */ -/* +/** * @test * @bug 6338874 * @summary Check that notification dispatch is not linear in number of MBeans. * @author Eamonn McManus * @modules java.management + * + * @library /lib/testlibrary + * @run build jdk.testlibrary.* ListenerScaleTest + * @run main ListenerScaleTest */ /* @@ -67,6 +71,8 @@ import javax.management.remote.JMXConnectorServer; import javax.management.remote.JMXConnectorServerFactory; import javax.management.remote.JMXServiceURL; +import jdk.testlibrary.Platform; + public class ListenerScaleTest { private static final int WARMUP_WITH_ONE_MBEAN = 1000; private static final int NOTIFS_TO_TIME = 100; @@ -126,6 +132,10 @@ public class ListenerScaleTest { }; public static void main(String[] args) throws Exception { + if (Platform.isDebugBuild()) { + System.out.println("Running on a debug build. Performance test not applicable. Skipping."); + return; + } MBeanServer mbs = MBeanServerFactory.newMBeanServer(); Sender sender = new Sender(); mbs.registerMBean(sender, testObjectName); From 3e2a1f00e54b94ee9ed515881dd772334fb230c5 Mon Sep 17 00:00:00 2001 From: Jaroslav Bachorik Date: Thu, 14 May 2015 11:41:11 +0200 Subject: [PATCH 04/36] 8078143: java/lang/management/ThreadMXBean/AllThreadIds.java fails intermittently Reviewed-by: dholmes, martin --- .../management/ThreadMXBean/AllThreadIds.java | 220 +++++++++++++----- 1 file changed, 160 insertions(+), 60 deletions(-) diff --git a/jdk/test/java/lang/management/ThreadMXBean/AllThreadIds.java b/jdk/test/java/lang/management/ThreadMXBean/AllThreadIds.java index 3ecacae2569..9de573c3851 100644 --- a/jdk/test/java/lang/management/ThreadMXBean/AllThreadIds.java +++ b/jdk/test/java/lang/management/ThreadMXBean/AllThreadIds.java @@ -32,9 +32,30 @@ */ import java.lang.management.*; +import java.time.Instant; import java.util.concurrent.Phaser; +import java.util.function.Supplier; public class AllThreadIds { + /** + * A supplier wrapper for the delayed format printing. + * The supplied value will have to be formatted as $s + * @param The wrapped type + */ + private static final class ArgWrapper { + private final Supplier val; + + public ArgWrapper(Supplier val) { + this.val = val; + } + + @Override + public String toString() { + T resolved = val.get(); + return resolved != null ? resolved.toString() : null; + } + } + final static int DAEMON_THREADS = 20; final static int USER_THREADS = 5; final static int ALL_THREADS = DAEMON_THREADS + USER_THREADS; @@ -47,15 +68,10 @@ public class AllThreadIds { private static long prevTotalThreadCount = 0; private static int prevLiveThreadCount = 0; private static int prevPeakThreadCount = 0; - private static long curTotalThreadCount = 0; - private static int curLiveThreadCount = 0; - private static int curPeakThreadCount = 0; private static final Phaser startupCheck = new Phaser(ALL_THREADS + 1); private static void printThreadList() { - if (!trace) return; - long[] list = mbean.getAllThreadIds(); for (int i = 1; i <= list.length; i++) { System.out.println(i + ": Thread id = " + list[i-1]); @@ -68,59 +84,13 @@ public class AllThreadIds { } } - private static void fail(String msg) { - trace = true; - printThreadList(); - throw new RuntimeException(msg); - } - - private static void checkThreadCount(int numNewThreads, - int numTerminatedThreads) - throws Exception { - prevTotalThreadCount = curTotalThreadCount; - prevLiveThreadCount = curLiveThreadCount; - prevPeakThreadCount = curPeakThreadCount; - curTotalThreadCount = mbean.getTotalStartedThreadCount(); - curLiveThreadCount = mbean.getThreadCount(); - curPeakThreadCount = mbean.getPeakThreadCount(); - - if ((curLiveThreadCount - prevLiveThreadCount) != - (numNewThreads - numTerminatedThreads)) { - fail("Unexpected number of live threads: " + - " Prev live = " + prevLiveThreadCount + - " Current live = " + curLiveThreadCount + - " Threads added = " + numNewThreads + - " Threads terminated = " + numTerminatedThreads); - } - if (curPeakThreadCount - prevPeakThreadCount != numNewThreads) { - fail("Unexpected number of peak threads: " + - " Prev peak = " + prevPeakThreadCount + - " Current peak = " + curPeakThreadCount + - " Threads added = " + numNewThreads); - } - if (curTotalThreadCount - prevTotalThreadCount != numNewThreads) { - fail("Unexpected number of total threads: " + - " Prev Total = " + prevTotalThreadCount + - " Current Total = " + curTotalThreadCount + - " Threads added = " + numNewThreads); - } - long[] list = mbean.getAllThreadIds(); - if (list.length != curLiveThreadCount) { - fail("Array length returned by " + - "getAllThreadIds() = " + list.length + - " not matched count = " + curLiveThreadCount); - } - } - - public static void main(String args[]) throws Exception { - if (args.length > 0 && args[0].equals("trace")) { - trace = true; - } - - curTotalThreadCount = mbean.getTotalStartedThreadCount(); - curLiveThreadCount = mbean.getThreadCount(); - curPeakThreadCount = mbean.getPeakThreadCount(); + private static void checkInitialState() throws Exception { + updateCounters(); checkThreadCount(0, 0); + } + + private static void checkAllThreadsAlive() throws Exception { + updateCounters(); // Start all threads and wait to be sure they all are alive for (int i = 0; i < ALL_THREADS; i++) { @@ -133,8 +103,9 @@ public class AllThreadIds { startupCheck.arriveAndAwaitAdvance(); checkThreadCount(ALL_THREADS, 0); - printThreadList(); - + if (trace) { + printThreadList(); + } // Check mbean now. All threads must appear in getAllThreadIds() list long[] list = mbean.getAllThreadIds(); @@ -165,6 +136,10 @@ public class AllThreadIds { if (trace) { System.out.println(); } + } + + private static void checkDaemonThreadsDead() throws Exception { + updateCounters(); // Stop daemon threads, wait to be sure they all are dead, and check // that they disappeared from getAllThreadIds() list @@ -179,7 +154,7 @@ public class AllThreadIds { checkThreadCount(0, DAEMON_THREADS); // Check mbean now - list = mbean.getAllThreadIds(); + long[] list = mbean.getAllThreadIds(); for (int i = 0; i < ALL_THREADS; i++) { long expectedId = allThreads[i].getId(); @@ -208,6 +183,10 @@ public class AllThreadIds { } } } + } + + private static void checkAllThreadsDead() throws Exception { + updateCounters(); // Stop all threads and wait to be sure they all are dead for (int i = DAEMON_THREADS; i < ALL_THREADS; i++) { @@ -219,6 +198,127 @@ public class AllThreadIds { // and check the thread count checkThreadCount(0, ALL_THREADS - DAEMON_THREADS); + } + + private static void checkThreadCount(int numNewThreads, + int numTerminatedThreads) + throws Exception { + + checkLiveThreads(numNewThreads, numTerminatedThreads); + checkPeakThreads(numNewThreads); + checkTotalThreads(numNewThreads); + checkThreadIds(); + } + + private static void checkLiveThreads(int numNewThreads, + int numTerminatedThreads) + throws InterruptedException { + int diff = numNewThreads - numTerminatedThreads; + + waitTillEquals( + diff + prevLiveThreadCount, + ()->(long)mbean.getThreadCount(), + "Unexpected number of live threads: " + + " Prev live = %1$d Current live = ${provided} Threads added = %2$d" + + " Threads terminated = %3$d", + ()->prevLiveThreadCount, + ()->numNewThreads, + ()->numTerminatedThreads + ); + } + + private static void checkPeakThreads(int numNewThreads) + throws InterruptedException { + + waitTillEquals(numNewThreads + prevPeakThreadCount, + ()->(long)mbean.getPeakThreadCount(), + "Unexpected number of peak threads: " + + " Prev peak = %1$d Current peak = ${provided} Threads added = %2$d", + ()->prevPeakThreadCount, + ()->numNewThreads + ); + } + + private static void checkTotalThreads(int numNewThreads) + throws InterruptedException { + + waitTillEquals(numNewThreads + prevTotalThreadCount, + ()->mbean.getTotalStartedThreadCount(), + "Unexpected number of total threads: " + + " Prev Total = %1$d Current Total = ${provided} Threads added = %2$d", + ()->prevTotalThreadCount, + ()->numNewThreads + ); + } + + private static void checkThreadIds() throws InterruptedException { + long[] list = mbean.getAllThreadIds(); + + waitTillEquals( + list.length, + ()->(long)mbean.getThreadCount(), + "Array length returned by " + + "getAllThreadIds() = %1$d not matched count = ${provided}", + ()->list.length + ); + } + + /** + * Waits till the expectedVal equals to the retrievedVal. + * It will report a status message on the first occasion of the value mismatch + * and then, subsequently, when the retrievedVal value changes. + * @param expectedVal The value to wait for + * @param retrievedVal The supplier of the value to check against the expectedVal + * @param msgFormat The formatted message to be printed in case of mismatch + * @param msgArgs The parameters to the formatted message + * @throws InterruptedException + */ + private static void waitTillEquals(long expectedVal, Supplier retrievedVal, + String msgFormat, Supplier ... msgArgs) + throws InterruptedException { + Object[] args = null; + + long countPrev = -1; + while (true) { + Long count = retrievedVal.get(); + if (count == expectedVal) break; + if (countPrev == -1 || countPrev != count) { + if (args == null) { + args = new Object[msgArgs.length]; + for(int i=0; i < msgArgs.length; i++) { + args[i] = new ArgWrapper<>((Supplier)msgArgs[i]); + } + } + System.err.format("TS: %s\n", Instant.now()); + System.err.format( + msgFormat + .replace("${provided}", String.valueOf(count)) + .replace("$d", "$s"), + args + ).flush(); + printThreadList(); + System.err.println("\nRetrying ...\n"); + } + countPrev = count; + Thread.sleep(1); + } + } + + private static void updateCounters() { + prevTotalThreadCount = mbean.getTotalStartedThreadCount(); + prevLiveThreadCount = mbean.getThreadCount(); + prevPeakThreadCount = mbean.getPeakThreadCount(); + } + + public static void main(String args[]) throws Exception { + if (args.length > 0 && args[0].equals("trace")) { + trace = true; + } + + checkInitialState(); + checkAllThreadsAlive(); + checkDaemonThreadsDead(); + checkAllThreadsDead(); if (testFailed) throw new RuntimeException("TEST FAILED."); From 7695bc389d1b377b29e1eb8c2cf102bfd6454cc7 Mon Sep 17 00:00:00 2001 From: Denis Kononenko Date: Tue, 19 May 2015 14:03:20 +0300 Subject: [PATCH 05/36] 8077866: [TESTBUG] Some of java.lang tests cannot be run on compact profiles 1, 2 Reviewed-by: dholmes, alanb --- jdk/test/TEST.groups | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/jdk/test/TEST.groups b/jdk/test/TEST.groups index 73ac408f90e..ef17c46f0d3 100644 --- a/jdk/test/TEST.groups +++ b/jdk/test/TEST.groups @@ -599,6 +599,10 @@ needs_compact3 = \ sun/security/jgss \ sun/security/krb5 \ java/lang/annotation/AnnotationType/AnnotationTypeDeadlockTest.java \ + java/lang/invoke/lambda/LambdaStackTrace.java \ + java/lang/invoke/LFCaching/LFGarbageCollectedTest.java \ + java/lang/invoke/LFCaching/LFMultiThreadCachingTest.java \ + java/lang/invoke/LFCaching/LFSingleThreadCachingTest.java \ java/lang/System/MacEncoding/TestFileEncoding.java \ java/nio/channels/AsynchronousSocketChannel/Leaky.java \ java/security/PermissionCollection/Concurrent.java \ From 318383493e6e9d95777b66f6f787573dcce1285f Mon Sep 17 00:00:00 2001 From: Shobhit Gupta Date: Fri, 22 May 2015 16:13:00 +0300 Subject: [PATCH 06/36] 8079440: [TESTBUG] @run is missing in java/awt/TrayIcon/8072769/bug8072769.java Reviewed-by: alexsch, azvegint --- jdk/test/java/awt/TrayIcon/8072769/bug8072769.java | 1 + 1 file changed, 1 insertion(+) diff --git a/jdk/test/java/awt/TrayIcon/8072769/bug8072769.java b/jdk/test/java/awt/TrayIcon/8072769/bug8072769.java index 26b64a087bd..defdf07a6c9 100644 --- a/jdk/test/java/awt/TrayIcon/8072769/bug8072769.java +++ b/jdk/test/java/awt/TrayIcon/8072769/bug8072769.java @@ -27,6 +27,7 @@ @author Semyon Sadetsky @library ../../../../lib/testlibrary @build jdk.testlibrary.OSInfo + @run main bug8072769 */ import jdk.testlibrary.OSInfo; From 3788afad1f0fb0181d472dfb6594e0b374502d95 Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Fri, 22 May 2015 10:12:18 -0400 Subject: [PATCH 07/36] 8074818: Resolve disabled warnings for libjava 8080007: Stop ignoring warnings for libjava Reviewed-by: alanb, erikj --- jdk/make/lib/CoreLibraries.gmk | 5 ----- jdk/src/java.base/share/native/libjava/FileInputStream.c | 8 ++++---- jdk/src/java.base/share/native/libjava/jdk_util.c | 8 ++++---- jdk/src/java.base/share/native/libjava/jni_util.c | 4 ++-- jdk/src/java.base/unix/native/libjava/ProcessImpl_md.c | 9 ++++++--- jdk/src/java.base/unix/native/libjava/TimeZone_md.c | 6 +++--- .../windows/native/libjava/ConcurrentPReader_md.c | 4 ++-- .../java.base/windows/native/libjava/ProcessImpl_md.c | 4 ++-- jdk/src/java.base/windows/native/libjava/java_props_md.c | 6 ++++-- jdk/src/java.base/windows/native/libjava/jni_util_md.c | 4 ++-- 10 files changed, 29 insertions(+), 29 deletions(-) diff --git a/jdk/make/lib/CoreLibraries.gmk b/jdk/make/lib/CoreLibraries.gmk index a494cb3d207..52437c8bacc 100644 --- a/jdk/make/lib/CoreLibraries.gmk +++ b/jdk/make/lib/CoreLibraries.gmk @@ -146,11 +146,6 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBJAVA, \ OPTIMIZATION := HIGH, \ CFLAGS := $(CFLAGS_JDKLIB) \ $(LIBJAVA_CFLAGS), \ - DISABLED_WARNINGS_gcc := type-limits format-nonliteral, \ - DISABLED_WARNINGS_clang := int-conversion, \ - DISABLED_WARNINGS_solstudio := E_DECLARATION_IN_CODE, \ - DISABLED_WARNINGS_microsoft := 4022 4267 4996, \ - WARNINGS_AS_ERRORS_solstudio := false, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libjava/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ diff --git a/jdk/src/java.base/share/native/libjava/FileInputStream.c b/jdk/src/java.base/share/native/libjava/FileInputStream.c index dc1aea5cd64..d0e23897015 100644 --- a/jdk/src/java.base/share/native/libjava/FileInputStream.c +++ b/jdk/src/java.base/share/native/libjava/FileInputStream.c @@ -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 @@ -23,6 +23,9 @@ * questions. */ +#include +#include + #include "jni.h" #include "jni_util.h" #include "jlong.h" @@ -32,9 +35,6 @@ #include "java_io_FileInputStream.h" -#include -#include - #include "io_util_md.h" /*******************************************************************/ diff --git a/jdk/src/java.base/share/native/libjava/jdk_util.c b/jdk/src/java.base/share/native/libjava/jdk_util.c index 8fe32bfcfaf..9419e8af818 100644 --- a/jdk/src/java.base/share/native/libjava/jdk_util.c +++ b/jdk/src/java.base/share/native/libjava/jdk_util.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -58,9 +58,9 @@ JDK_GetVersionInfo0(jdk_version_info* info, size_t info_size) { /* If the JDK_BUILD_NUMBER is of format bXX and XX is an integer * XX is the jdk_build_number. */ - int len = strlen(jdk_build_string); + size_t len = strlen(jdk_build_string); if (jdk_build_string[0] == 'b' && len >= 2) { - int i = 0; + size_t i = 0; for (i = 1; i < len; i++) { if (isdigit(jdk_build_string[i])) { build_number[i-1] = jdk_build_string[i]; @@ -76,7 +76,7 @@ JDK_GetVersionInfo0(jdk_version_info* info, size_t info_size) { } } - assert(jdk_build_number >= 0 && jdk_build_number <= 255); + assert(jdk_build_number <= 255); if (strlen(jdk_update_string) == 2 || strlen(jdk_update_string) == 3) { if (isdigit(jdk_update_string[0]) && isdigit(jdk_update_string[1])) { diff --git a/jdk/src/java.base/share/native/libjava/jni_util.c b/jdk/src/java.base/share/native/libjava/jni_util.c index 2f8f4e48b1a..7308b08b192 100644 --- a/jdk/src/java.base/share/native/libjava/jni_util.c +++ b/jdk/src/java.base/share/native/libjava/jni_util.c @@ -157,7 +157,7 @@ JNU_ThrowByNameWithLastError(JNIEnv *env, const char *name, const char *defaultDetail) { char buf[256]; - int n = getLastErrorString(buf, sizeof(buf)); + size_t n = getLastErrorString(buf, sizeof(buf)); if (n > 0) { jstring s = JNU_NewStringPlatform(env, buf); @@ -448,7 +448,7 @@ getString8859_1Chars(JNIEnv *env, jstring jstr) static jstring newString646_US(JNIEnv *env, const char *str) { - int len = strlen(str); + int len = (int)strlen(str); jchar buf[512]; jchar *str1; jstring result; diff --git a/jdk/src/java.base/unix/native/libjava/ProcessImpl_md.c b/jdk/src/java.base/unix/native/libjava/ProcessImpl_md.c index b2992b5c557..2c85b9da1cc 100644 --- a/jdk/src/java.base/unix/native/libjava/ProcessImpl_md.c +++ b/jdk/src/java.base/unix/native/libjava/ProcessImpl_md.c @@ -286,12 +286,14 @@ releaseBytes(JNIEnv *env, jbyteArray arr, const char* parr) (*env)->ReleaseByteArrayElements(env, arr, (jbyte*) parr, JNI_ABORT); } +#define IOE_FORMAT "error=%d, %s" + static void throwIOException(JNIEnv *env, int errnum, const char *defaultDetail) { - static const char * const format = "error=%d, %s"; const char *detail = defaultDetail; char *errmsg; + size_t fmtsize; jstring s; if (errnum != 0) { @@ -300,11 +302,12 @@ throwIOException(JNIEnv *env, int errnum, const char *defaultDetail) detail = s; } /* ASCII Decimal representation uses 2.4 times as many bits as binary. */ - errmsg = NEW(char, strlen(format) + strlen(detail) + 3 * sizeof(errnum)); + fmtsize = sizeof(IOE_FORMAT) + strlen(detail) + 3 * sizeof(errnum); + errmsg = NEW(char, fmtsize); if (errmsg == NULL) return; - sprintf(errmsg, format, errnum, detail); + snprintf(errmsg, fmtsize, IOE_FORMAT, errnum, detail); s = JNU_NewStringPlatform(env, errmsg); if (s != NULL) { jobject x = JNU_NewObjectByName(env, "java/io/IOException", diff --git a/jdk/src/java.base/unix/native/libjava/TimeZone_md.c b/jdk/src/java.base/unix/native/libjava/TimeZone_md.c index 76c3f394b2d..849347015c6 100644 --- a/jdk/src/java.base/unix/native/libjava/TimeZone_md.c +++ b/jdk/src/java.base/unix/native/libjava/TimeZone_md.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2014, 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 @@ -735,10 +735,10 @@ getGMTOffsetID() local_tm = localtime(&clock); if (local_tm->tm_gmtoff >= 0) { offset = (time_t) local_tm->tm_gmtoff; - sign = "+"; + sign = '+'; } else { offset = (time_t) -local_tm->tm_gmtoff; - sign = "-"; + sign = '-'; } sprintf(buf, (const char *)"GMT%c%02d:%02d", sign, (int)(offset/3600), (int)((offset%3600)/60)); diff --git a/jdk/src/java.base/windows/native/libjava/ConcurrentPReader_md.c b/jdk/src/java.base/windows/native/libjava/ConcurrentPReader_md.c index 29df5384abd..c30120155ca 100644 --- a/jdk/src/java.base/windows/native/libjava/ConcurrentPReader_md.c +++ b/jdk/src/java.base/windows/native/libjava/ConcurrentPReader_md.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -47,7 +47,7 @@ Java_jdk_internal_jimage_concurrent_ConcurrentPReader_pread(JNIEnv *env, jclass DWORD nread; BOOL result; - jlong handle = (*env)->GetLongField(env, fdo, handle_fdID); + HANDLE handle = (HANDLE)(*env)->GetLongField(env, fdo, handle_fdID); void *buf = (void *)jlong_to_ptr(address); ZeroMemory(&ov, sizeof(ov)); diff --git a/jdk/src/java.base/windows/native/libjava/ProcessImpl_md.c b/jdk/src/java.base/windows/native/libjava/ProcessImpl_md.c index 1bb5896be5f..1200a8ae09e 100644 --- a/jdk/src/java.base/windows/native/libjava/ProcessImpl_md.c +++ b/jdk/src/java.base/windows/native/libjava/ProcessImpl_md.c @@ -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 @@ -90,7 +90,7 @@ win32Error(JNIEnv *env, const WCHAR *functionName) CP_UTF8, 0, utf16_javaMessage, - n, /*by creation n <= MESSAGE_LENGTH*/ + (int)n, /*by creation n <= MESSAGE_LENGTH*/ utf8_javaMessage, MESSAGE_LENGTH*2, NULL, diff --git a/jdk/src/java.base/windows/native/libjava/java_props_md.c b/jdk/src/java.base/windows/native/libjava/java_props_md.c index 05b668a7936..270d0e350ce 100644 --- a/jdk/src/java.base/windows/native/libjava/java_props_md.c +++ b/jdk/src/java.base/windows/native/libjava/java_props_md.c @@ -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 @@ -345,6 +345,8 @@ SetupI18nProps(LCID lcid, char** language, char** script, char** country, return TRUE; } +// GetVersionEx is deprecated; disable the warning until a replacement is found +#pragma warning(disable : 4996) java_props_t * GetJavaProperties(JNIEnv* env) { @@ -680,5 +682,5 @@ GetJavaProperties(JNIEnv* env) jstring GetStringPlatform(JNIEnv *env, nchar* wcstr) { - return (*env)->NewString(env, wcstr, wcslen(wcstr)); + return (*env)->NewString(env, wcstr, (jsize)wcslen(wcstr)); } diff --git a/jdk/src/java.base/windows/native/libjava/jni_util_md.c b/jdk/src/java.base/windows/native/libjava/jni_util_md.c index b2bb70aa758..374e3084c07 100644 --- a/jdk/src/java.base/windows/native/libjava/jni_util_md.c +++ b/jdk/src/java.base/windows/native/libjava/jni_util_md.c @@ -124,9 +124,9 @@ getLastErrorString(char *utf8_jvmErrorMsg, size_t cbErrorMsg) CP_UTF8, 0, utf16_osErrorMsg, - n, + (int)n, utf8_jvmErrorMsg, - cbErrorMsg, + (int)cbErrorMsg, NULL, NULL); From 67b606e45634c42912141f013f41fc85a1e7bb77 Mon Sep 17 00:00:00 2001 From: Pooja Chopra Date: Fri, 22 May 2015 17:30:21 +0300 Subject: [PATCH 08/36] 8078855: [TEST_BUG] javax/swing/JComboBox/8032878/bug8032878.java fails in WindowsClassicLookAndFeel Reviewed-by: alexsch, aivanov --- jdk/test/javax/swing/JComboBox/8032878/bug8032878.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/jdk/test/javax/swing/JComboBox/8032878/bug8032878.java b/jdk/test/javax/swing/JComboBox/8032878/bug8032878.java index 32db0d8666f..c20e4862e41 100644 --- a/jdk/test/javax/swing/JComboBox/8032878/bug8032878.java +++ b/jdk/test/javax/swing/JComboBox/8032878/bug8032878.java @@ -22,7 +22,7 @@ */ /* @test - * @bug 8032878 + * @bug 8032878 8078855 * @summary Checks that JComboBox as JTable cell editor processes key events * even where setSurrendersFocusOnKeystroke flag in JTable is false and * that it does not lose the first key press where the flag is true. @@ -36,6 +36,7 @@ import java.awt.*; import java.awt.event.KeyEvent; import javax.swing.*; import javax.swing.text.JTextComponent; +import javax.swing.plaf.metal.MetalLookAndFeel; public class bug8032878 implements Runnable { private static final String ONE = "one"; @@ -53,6 +54,8 @@ public class bug8032878 implements Runnable { private volatile String text; public static void main(String[] args) throws Exception { + UIManager.setLookAndFeel(new MetalLookAndFeel()); + final bug8032878 test = new bug8032878(); test.test(false); From d1d75812b049df4c7e7b388f82a986409cfba22e Mon Sep 17 00:00:00 2001 From: Xueming Shen Date: Fri, 22 May 2015 08:56:33 -0700 Subject: [PATCH 09/36] 8064736: Part of java.util.jar.JarFile spec looks confusing with references to Zip Update the api doc for entries()/stream() accordingly Reviewed-by: alanb --- .../share/classes/java/util/jar/JarFile.java | 16 ++++++++++++++-- .../share/classes/java/util/zip/ZipFile.java | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/jdk/src/java.base/share/classes/java/util/jar/JarFile.java b/jdk/src/java.base/share/classes/java/util/jar/JarFile.java index 3c01aacecc2..f565bc02361 100644 --- a/jdk/src/java.base/share/classes/java/util/jar/JarFile.java +++ b/jdk/src/java.base/share/classes/java/util/jar/JarFile.java @@ -268,13 +268,25 @@ class JarFile extends ZipFile { } /** - * Returns an enumeration of the zip file entries. + * Returns an enumeration of the jar file entries. + * + * @return an enumeration of the jar file entries + * @throws IllegalStateException + * may be thrown if the jar file has been closed */ public Enumeration entries() { return new JarEntryIterator(); } - @Override + /** + * Returns an ordered {@code Stream} over the jar file entries. + * Entries appear in the {@code Stream} in the order they appear in + * the central directory of the jar file. + * + * @return an ordered {@code Stream} of entries in this jar file + * @throws IllegalStateException if the jar file has been closed + * @since 1.8 + */ public Stream stream() { return StreamSupport.stream(Spliterators.spliterator( new JarEntryIterator(), size(), diff --git a/jdk/src/java.base/share/classes/java/util/zip/ZipFile.java b/jdk/src/java.base/share/classes/java/util/zip/ZipFile.java index e6b9f01a38b..8669158bbc9 100644 --- a/jdk/src/java.base/share/classes/java/util/zip/ZipFile.java +++ b/jdk/src/java.base/share/classes/java/util/zip/ZipFile.java @@ -538,7 +538,7 @@ class ZipFile implements ZipConstants, Closeable { } /** - * Return an ordered {@code Stream} over the ZIP file entries. + * Returns an ordered {@code Stream} over the ZIP file entries. * Entries appear in the {@code Stream} in the order they appear in * the central directory of the ZIP file. * From 4612edcf52c160601c6e0aac514b175eb6d68d81 Mon Sep 17 00:00:00 2001 From: Xueming Shen Date: Fri, 22 May 2015 10:33:27 -0700 Subject: [PATCH 10/36] 8080803: sun/nio/cs/FindEncoderBugs.java failing intermittently To eliminate an extra byte buffer and copy in iso2022 encoding Reviewed-by: alanb, darcy --- .../share/classes/sun/nio/cs/ext/ISO2022.java | 25 +++++++------------ .../sun/nio/cs/ext/ISO2022_CN_CNS.java | 6 ++--- .../classes/sun/nio/cs/ext/ISO2022_CN_GB.java | 2 +- .../classes/sun/nio/cs/ext/ISO2022_KR.java | 6 ++--- 4 files changed, 15 insertions(+), 24 deletions(-) diff --git a/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022.java b/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022.java index 983d57d2786..7c56c8e5fbc 100644 --- a/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022.java +++ b/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022.java @@ -395,7 +395,7 @@ abstract class ISO2022 protected final byte maximumDesignatorLength = 4; - protected String SODesig, + protected byte[] SODesig, SS2Desig = null, SS3Desig = null; @@ -426,21 +426,18 @@ abstract class ISO2022 SS3DesDefined = false; } - private int unicodeToNative(char unicode, byte ebyte[]) - { + private int unicodeToNative(char unicode, byte ebyte[]) { int index = 0; - byte tmpByte[]; char convChar[] = {unicode}; byte convByte[] = new byte[4]; int converted; try{ CharBuffer cc = CharBuffer.wrap(convChar); - ByteBuffer bb = ByteBuffer.allocate(4); + ByteBuffer bb = ByteBuffer.wrap(convByte); ISOEncoder.encode(cc, bb, true); bb.flip(); converted = bb.remaining(); - bb.get(convByte,0,converted); } catch(Exception e) { return -1; } @@ -449,9 +446,8 @@ abstract class ISO2022 if (!SODesDefined) { newSODesDefined = true; ebyte[0] = ISO_ESC; - tmpByte = SODesig.getBytes(); - System.arraycopy(tmpByte,0,ebyte,1,tmpByte.length); - index = tmpByte.length+1; + System.arraycopy(SODesig, 0, ebyte, 1, SODesig.length); + index = SODesig.length + 1; } if (!shiftout) { newshiftout = true; @@ -465,9 +461,8 @@ abstract class ISO2022 if (!SS2DesDefined) { newSS2DesDefined = true; ebyte[0] = ISO_ESC; - tmpByte = SS2Desig.getBytes(); - System.arraycopy(tmpByte, 0, ebyte, 1, tmpByte.length); - index = tmpByte.length+1; + System.arraycopy(SS2Desig, 0, ebyte, 1, SS2Desig.length); + index = SS2Desig.length + 1; } ebyte[index++] = ISO_ESC; ebyte[index++] = ISO_SS2_7; @@ -477,9 +472,8 @@ abstract class ISO2022 if(!SS3DesDefined){ newSS3DesDefined = true; ebyte[0] = ISO_ESC; - tmpByte = SS3Desig.getBytes(); - System.arraycopy(tmpByte, 0, ebyte, 1, tmpByte.length); - index = tmpByte.length+1; + System.arraycopy(SS3Desig, 0, ebyte, 1, SS3Desig.length); + index = SS3Desig.length + 1; } ebyte[index++] = ISO_ESC; ebyte[index++] = ISO_SS3_7; @@ -560,7 +554,6 @@ abstract class ISO2022 } } - private CoderResult encodeBufferLoop(CharBuffer src, ByteBuffer dst) { diff --git a/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_CN_CNS.java b/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_CN_CNS.java index f9fe0417af0..af623c6c009 100644 --- a/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_CN_CNS.java +++ b/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_CN_CNS.java @@ -67,9 +67,9 @@ public class ISO2022_CN_CNS extends ISO2022 implements HistoricallyNamedCharset public Encoder(Charset cs) { super(cs); - SODesig = "$)G"; - SS2Desig = "$*H"; - SS3Desig = "$+I"; + SODesig = new byte[] {'$', ')', 'G' }; + SS2Desig = new byte[] {'$', '*', 'H' }; + SS3Desig = new byte[] {'$', '+', 'I' }; try { Charset cset = Charset.forName("EUC_TW"); // CNS11643 diff --git a/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_CN_GB.java b/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_CN_GB.java index 1faaa537d7f..aca60b5f255 100644 --- a/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_CN_GB.java +++ b/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_CN_GB.java @@ -68,7 +68,7 @@ public class ISO2022_CN_GB extends ISO2022 implements HistoricallyNamedCharset public Encoder(Charset cs) { super(cs); - SODesig = "$)A"; + SODesig = new byte[] { '$', ')', 'A'}; try { Charset cset = Charset.forName("EUC_CN"); // GB2312 diff --git a/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_KR.java b/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_KR.java index 6d96acde6f1..9ee19cbf996 100644 --- a/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_KR.java +++ b/jdk/src/jdk.charsets/share/classes/sun/nio/cs/ext/ISO2022_KR.java @@ -81,11 +81,9 @@ implements HistoricallyNamedCharset private static class Encoder extends ISO2022.Encoder { - public Encoder(Charset cs) - { + public Encoder(Charset cs) { super(cs); - SODesig = "$)C"; - + SODesig = new byte[] {'$', ')', 'C' }; try { ISOEncoder = ksc5601_cs.newEncoder(); } catch (Exception e) { } From 0de6f9f413b3e86afee4a188dfdbe5c474a97f51 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Fri, 22 May 2015 10:45:59 -0700 Subject: [PATCH 11/36] 8080901: Replace package.html files with package-info.java in the java.base module Reviewed-by: lancea, alanb, vinnie --- .../sun/java/util/jar/pack/package-info.java | 101 ++++++++++ .../com/sun/java/util/jar/pack/package.html | 104 ---------- .../classes/com/sun/net/ssl/package-info.java | 31 +++ .../classes/com/sun/net/ssl/package.html | 56 ------ .../share/classes/java/io/package-info.java | 49 +++++ .../share/classes/java/io/package.html | 52 ----- .../classes/java/lang/ref/package-info.java | 140 +++++++++++++ .../share/classes/java/lang/ref/package.html | 147 -------------- .../java/nio/channels/spi/package-info.java | 44 +++++ .../java/nio/channels/spi/package.html | 45 ----- .../java/nio/charset/package-info.java | 90 +++++++++ .../classes/java/nio/charset/package.html | 88 --------- .../java/nio/charset/spi/package-info.java | 41 ++++ .../classes/java/nio/charset/spi/package.html | 45 ----- .../share/classes/java/nio/package-info.java | 141 +++++++++++++ .../share/classes/java/nio/package.html | 139 ------------- .../share/classes/java/text/package-info.java | 47 +++++ .../share/classes/java/text/package.html | 65 ------ .../classes/java/text/spi/package-info.java | 31 +++ .../share/classes/java/text/spi/package.html | 50 ----- .../classes/java/util/jar/package-info.java | 49 +++++ .../share/classes/java/util/jar/package.html | 62 ------ .../share/classes/java/util/package-info.java | 52 +++++ .../share/classes/java/util/package.html | 55 ------ .../classes/java/util/regex/package-info.java | 56 ++++++ .../classes/java/util/regex/package.html | 66 ------- .../classes/java/util/spi/package-info.java | 31 +++ .../share/classes/java/util/spi/package.html | 50 ----- .../javax/crypto/interfaces/package-info.java | 68 +++++++ .../javax/crypto/interfaces/package.html | 74 ------- .../classes/javax/crypto/package-info.java | 68 +++++++ .../share/classes/javax/crypto/package.html | 76 ------- .../javax/crypto/spec/package-info.java | 74 +++++++ .../classes/javax/crypto/spec/package.html | 77 -------- .../share/classes/javax/net/package-info.java | 33 ++++ .../share/classes/javax/net/package.html | 54 ----- .../classes/javax/net/ssl/package-info.java | 41 ++++ .../share/classes/javax/net/ssl/package.html | 57 ------ .../share/classes/sun/reflect/package.html | 187 ------------------ 39 files changed, 1187 insertions(+), 1549 deletions(-) create mode 100644 jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/package-info.java delete mode 100644 jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/package.html create mode 100644 jdk/src/java.base/share/classes/com/sun/net/ssl/package-info.java delete mode 100644 jdk/src/java.base/share/classes/com/sun/net/ssl/package.html create mode 100644 jdk/src/java.base/share/classes/java/io/package-info.java delete mode 100644 jdk/src/java.base/share/classes/java/io/package.html create mode 100644 jdk/src/java.base/share/classes/java/lang/ref/package-info.java delete mode 100644 jdk/src/java.base/share/classes/java/lang/ref/package.html create mode 100644 jdk/src/java.base/share/classes/java/nio/channels/spi/package-info.java delete mode 100644 jdk/src/java.base/share/classes/java/nio/channels/spi/package.html create mode 100644 jdk/src/java.base/share/classes/java/nio/charset/package-info.java delete mode 100644 jdk/src/java.base/share/classes/java/nio/charset/package.html create mode 100644 jdk/src/java.base/share/classes/java/nio/charset/spi/package-info.java delete mode 100644 jdk/src/java.base/share/classes/java/nio/charset/spi/package.html create mode 100644 jdk/src/java.base/share/classes/java/nio/package-info.java delete mode 100644 jdk/src/java.base/share/classes/java/nio/package.html create mode 100644 jdk/src/java.base/share/classes/java/text/package-info.java delete mode 100644 jdk/src/java.base/share/classes/java/text/package.html create mode 100644 jdk/src/java.base/share/classes/java/text/spi/package-info.java delete mode 100644 jdk/src/java.base/share/classes/java/text/spi/package.html create mode 100644 jdk/src/java.base/share/classes/java/util/jar/package-info.java delete mode 100644 jdk/src/java.base/share/classes/java/util/jar/package.html create mode 100644 jdk/src/java.base/share/classes/java/util/package-info.java delete mode 100644 jdk/src/java.base/share/classes/java/util/package.html create mode 100644 jdk/src/java.base/share/classes/java/util/regex/package-info.java delete mode 100644 jdk/src/java.base/share/classes/java/util/regex/package.html create mode 100644 jdk/src/java.base/share/classes/java/util/spi/package-info.java delete mode 100644 jdk/src/java.base/share/classes/java/util/spi/package.html create mode 100644 jdk/src/java.base/share/classes/javax/crypto/interfaces/package-info.java delete mode 100644 jdk/src/java.base/share/classes/javax/crypto/interfaces/package.html create mode 100644 jdk/src/java.base/share/classes/javax/crypto/package-info.java delete mode 100644 jdk/src/java.base/share/classes/javax/crypto/package.html create mode 100644 jdk/src/java.base/share/classes/javax/crypto/spec/package-info.java delete mode 100644 jdk/src/java.base/share/classes/javax/crypto/spec/package.html create mode 100644 jdk/src/java.base/share/classes/javax/net/package-info.java delete mode 100644 jdk/src/java.base/share/classes/javax/net/package.html create mode 100644 jdk/src/java.base/share/classes/javax/net/ssl/package-info.java delete mode 100644 jdk/src/java.base/share/classes/javax/net/ssl/package.html delete mode 100644 jdk/src/java.base/share/classes/sun/reflect/package.html diff --git a/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/package-info.java b/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/package-info.java new file mode 100644 index 00000000000..be6c818a249 --- /dev/null +++ b/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/package-info.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2003, 2011, 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. + */ + +/** + * This package provides methods to read files from a JAR file and to + * transform them to a more compact transfer format called Pack200. + * It also provides methods to receive the transmitted data and expand + * it into a JAR file equivalent to the original JAR file. + * + *

+ * The {@code pack} methods may be used by application developers who + * wish to deploy large JARs on the web. The {@code unpack} methods + * may be used by deployment applications such as Java Web Start and + * Java Plugin. + * + *

+ * In typical use, the packed output should be further compressed + * using a suitable tool such as gzip or + * {@code java.util.zip.GZIPOutputStream}. The resulting file (with + * a suffix ".pack.gz") should be hosted on a HTTP/1.1 compliant + * server, which will be capable of handling "Accept-Encoding", as + * specified by the HTTP 1.1 RFC2616 specification. + * + *

+ * NOTE: It is recommended that the original ".jar" file be + * hosted in addition to the ".pack.gz" file, so that older client + * implementations will continue to work reliably. (On-demand + * compression by the server is not recommended.) + * + *

+ * When a client application requests a ".jar" file (call it + * "Large.jar"), the client will transmit the headers + * "Content-Type=application/x-java-archive" as well as + * "Accept-Encoding=pack200-gzip". This indicates to the server that + * the client application desires an version of the file encoded with + * Pack200 and further compressed with gzip. + * + *

+ * The server implementation will typically check for the existence of + * "Large.pack.gz". If that file is available, the server will + * transmit it with the headers "Content-Encoding=pack200-gzip" and + * "Content-Type=application/x-java-archive". + * + *

+ * If the ".pack.gz" file, is not available, then the server will + * transmit the original ".jar" with "Content-Encoding=null" and + * "Content-Type=application/x-java-archive". + * + *

+ * A MIME type of "application/x-java-pack200" may be specified by the + * client application to indicate a ".pack" file is required. + * However, this has limited capability, and is not recommended. + * + *

Package Specification

+ * Network Transfer Format Specification : + * http://jcp.org/en/jsr/detail?id=200 + * + *

Related Documentation

+ * For overviews, tutorials, examples, guides, and tool documentation, please + * see: + * + * + *
  • + * @since 1.5
  • + */ +package com.sun.java.util.jar.pack; diff --git a/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/package.html b/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/package.html deleted file mode 100644 index 5fb74f66ba0..00000000000 --- a/jdk/src/java.base/share/classes/com/sun/java/util/jar/pack/package.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - -

    -This package provides methods to read files from a JAR file and -to transform them to a more compact transfer format called Pack200. -It also provides methods to receive the transmitted data and expand -it into a JAR file equivalent to the original JAR file. - -

    -The pack methods may be used by application developers -who wish to deploy large JARs on the web. The unpack methods may be used -by deployment applications such as Java Web Start and Java Plugin. - -

    -In typical use, the packed output should be further compressed using -a suitable tool such as gzip or java.util.zip.GZIPOutputStream. -The resulting file (with a suffix ".pack.gz") should be hosted on a HTTP/1.1 -compliant server, which will be capable of handling "Accept-Encoding", -as specified by the HTTP 1.1 RFC2616 specification. - -

    -NOTE: It is recommended that the original ".jar" file be hosted -in addition to the ".pack.gz" file, so that older client implementations -will continue to work reliably. -(On-demand compression by the server is not recommended.) - -

    -When a client application requests a ".jar" file (call it "Large.jar"), -the client will transmit the headers -"Content-Type=application/x-java-archive" as well as "Accept-Encoding=pack200-gzip". -This indicates to the server that the client application desires an version -of the file encoded with Pack200 and further compressed with gzip. - -

    -The server implementation will typically check for the existence of "Large.pack.gz". -If that file is available, the server will transmit it with the headers -"Content-Encoding=pack200-gzip" and "Content-Type=application/x-java-archive". - -

    -If the ".pack.gz" file, is not available, then the server will transmit -the original ".jar" -with "Content-Encoding=null" and "Content-Type=application/x-java-archive". - -

    -A MIME type of "application/x-java-pack200" may be specified by the -client application to indicate a ".pack" file is required. -However, this has limited capability, and is not recommended. - -

    Package Specification

    -Network Transfer Format Specification :
    -http://jcp.org/en/jsr/detail?id=200 - -

    Related Documentation

    -For overviews, tutorials, examples, guides, and tool documentation, please -see: - - -
  • -@since 1.5
  • - -
    - - diff --git a/jdk/src/java.base/share/classes/com/sun/net/ssl/package-info.java b/jdk/src/java.base/share/classes/com/sun/net/ssl/package-info.java new file mode 100644 index 00000000000..eb59e238164 --- /dev/null +++ b/jdk/src/java.base/share/classes/com/sun/net/ssl/package-info.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 1999, 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. + */ + +/** + * Provides classes related to creating and configuring secure socket + * factories. These classes are used with the Sun reference + * implementation of the Java Secure Socket Extension (JSSE). + */ +package com.sun.net.ssl; diff --git a/jdk/src/java.base/share/classes/com/sun/net/ssl/package.html b/jdk/src/java.base/share/classes/com/sun/net/ssl/package.html deleted file mode 100644 index 20352c2b117..00000000000 --- a/jdk/src/java.base/share/classes/com/sun/net/ssl/package.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - - - -Provides classes related to creating and configuring secure socket factories. -These classes are used with the Sun reference implementation of the Java -Secure Socket Extension (JSSE). - - - - diff --git a/jdk/src/java.base/share/classes/java/io/package-info.java b/jdk/src/java.base/share/classes/java/io/package-info.java new file mode 100644 index 00000000000..cf1b699cd0d --- /dev/null +++ b/jdk/src/java.base/share/classes/java/io/package-info.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 1998, 2010, 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. + */ + +/** + * Provides for system input and output through data streams, + * serialization and the file system. + * + * Unless otherwise noted, passing a null argument to a constructor or + * method in any class or interface in this package will cause a + * {@code NullPointerException} to be thrown. + * + *

    Package Specification

    + *
    + * + *

    Related Documentation

    + * + * For overviews, tutorials, examples, guides, and tool documentation, + * please see: + * + * + * @since 1.0 + */ +package java.io; diff --git a/jdk/src/java.base/share/classes/java/io/package.html b/jdk/src/java.base/share/classes/java/io/package.html deleted file mode 100644 index 5d80e56da9d..00000000000 --- a/jdk/src/java.base/share/classes/java/io/package.html +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - -Provides for system input and output through data streams, -serialization and the file system. - -Unless otherwise noted, passing a null argument to a constructor -or method in any class or interface in this package will cause a -NullPointerException to be thrown. - -

    Package Specification

    - - -

    Related Documentation

    - -For overviews, tutorials, examples, guides, and tool documentation, -please see: - - -@since 1.0 - - diff --git a/jdk/src/java.base/share/classes/java/lang/ref/package-info.java b/jdk/src/java.base/share/classes/java/lang/ref/package-info.java new file mode 100644 index 00000000000..a6273a92183 --- /dev/null +++ b/jdk/src/java.base/share/classes/java/lang/ref/package-info.java @@ -0,0 +1,140 @@ +/* + * Copyright (c) 1998, 2003, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * Provides reference-object classes, which support a limited degree + * of interaction with the garbage collector. A program may use a + * reference object to maintain a reference to some other object in + * such a way that the latter object may still be reclaimed by the + * collector. A program may also arrange to be notified some time + * after the collector has determined that the reachability of a given + * object has changed. + * + *

    Package Specification

    + * + * A reference object encapsulates a reference to some other + * object so that the reference itself may be examined and manipulated + * like any other object. Three types of reference objects are + * provided, each weaker than the last: soft, weak, + * and phantom. Each type corresponds to a different level + * of reachability, as defined below. Soft references are for + * implementing memory-sensitive caches, weak references are for + * implementing canonicalizing mappings that do not prevent their keys + * (or values) from being reclaimed, and phantom references are for + * scheduling pre-mortem cleanup actions in a more flexible way than + * is possible with the Java finalization mechanism. + * + *

    Each reference-object type is implemented by a subclass of the + * abstract base {@link java.lang.ref.Reference} class. + * An instance of one of these subclasses encapsulates a single + * reference to a particular object, called the referent. + * Every reference object provides methods for getting and clearing + * the reference. Aside from the clearing operation reference objects + * are otherwise immutable, so no {@code set} operation is + * provided. A program may further subclass these subclasses, adding + * whatever fields and methods are required for its purposes, or it + * may use these subclasses without change. + * + *

    Notification

    + * + * A program may request to be notified of changes in an object's + * reachability by registering an appropriate reference + * object with a reference queue at the time the reference + * object is created. Some time after the garbage collector + * determines that the reachability of the referent has changed to the + * value corresponding to the type of the reference, it will add the + * reference to the associated queue. At this point, the reference is + * considered to be enqueued. The program may remove + * references from a queue either by polling or by blocking until a + * reference becomes available. Reference queues are implemented by + * the {@link java.lang.ref.ReferenceQueue} class. + * + *

    The relationship between a registered reference object and its + * queue is one-sided. That is, a queue does not keep track of the + * references that are registered with it. If a registered reference + * becomes unreachable itself, then it will never be enqueued. It is + * the responsibility of the program using reference objects to ensure + * that the objects remain reachable for as long as the program is + * interested in their referents. + * + *

    While some programs will choose to dedicate a thread to + * removing reference objects from one or more queues and processing + * them, this is by no means necessary. A tactic that often works + * well is to examine a reference queue in the course of performing + * some other fairly-frequent action. For example, a hashtable that + * uses weak references to implement weak keys could poll its + * reference queue each time the table is accessed. This is how the + * {@link java.util.WeakHashMap} class works. Because + * the {@link java.lang.ref.ReferenceQueue#poll + * ReferenceQueue.poll} method simply checks an internal data + * structure, this check will add little overhead to the hashtable + * access methods. + * + *

    Automatically-cleared references

    + * + * Soft and weak references are automatically cleared by the collector + * before being added to the queues with which they are registered, if + * any. Therefore soft and weak references need not be registered + * with a queue in order to be useful, while phantom references do. + * An object that is reachable via phantom references will remain so + * until all such references are cleared or themselves become + * unreachable. + * + * + *

    Reachability

    + * + * Going from strongest to weakest, the different levels of + * reachability reflect the life cycle of an object. They are + * operationally defined as follows: + * + *
      + * + *
    • An object is strongly reachable if it can be reached + * by some thread without traversing any reference objects. A + * newly-created object is strongly reachable by the thread that + * created it. + * + *
    • An object is softly reachable if it is not strongly + * reachable but can be reached by traversing a soft reference. + * + *
    • An object is weakly reachable if it is neither + * strongly nor softly reachable but can be reached by traversing a + * weak reference. When the weak references to a weakly-reachable + * object are cleared, the object becomes eligible for finalization. + * + *
    • An object is phantom reachable if it is neither + * strongly, softly, nor weakly reachable, it has been finalized, and + * some phantom reference refers to it. + * + *
    • Finally, an object is unreachable, and therefore + * eligible for reclamation, when it is not reachable in any of the + * above ways. + * + *
    + * + * @author Mark Reinhold + * @since 1.2 + */ +package java.lang.ref; diff --git a/jdk/src/java.base/share/classes/java/lang/ref/package.html b/jdk/src/java.base/share/classes/java/lang/ref/package.html deleted file mode 100644 index f22a455f6ac..00000000000 --- a/jdk/src/java.base/share/classes/java/lang/ref/package.html +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - -Provides reference-object classes, which support a limited degree of -interaction with the garbage collector. A program may use a reference object -to maintain a reference to some other object in such a way that the latter -object may still be reclaimed by the collector. A program may also arrange to -be notified some time after the collector has determined that the reachability -of a given object has changed. - - -

    Package Specification

    - -A reference object encapsulates a reference to some other object so -that the reference itself may be examined and manipulated like any other -object. Three types of reference objects are provided, each weaker than the -last: soft, weak, and phantom. Each type -corresponds to a different level of reachability, as defined below. Soft -references are for implementing memory-sensitive caches, weak references are -for implementing canonicalizing mappings that do not prevent their keys (or -values) from being reclaimed, and phantom references are for scheduling -pre-mortem cleanup actions in a more flexible way than is possible with the -Java finalization mechanism. - -

    Each reference-object type is implemented by a subclass of the abstract -base {@link java.lang.ref.Reference} class. An instance of one of -these subclasses encapsulates a single reference to a particular object, called -the referent. Every reference object provides methods for getting and -clearing the reference. Aside from the clearing operation reference objects -are otherwise immutable, so no set operation is provided. A -program may further subclass these subclasses, adding whatever fields and -methods are required for its purposes, or it may use these subclasses without -change. - - -

    Notification

    - -A program may request to be notified of changes in an object's reachability by -registering an appropriate reference object with a reference -queue at the time the reference object is created. Some time after the -garbage collector determines that the reachability of the referent has changed -to the value corresponding to the type of the reference, it will add the -reference to the associated queue. At this point, the reference is considered -to be enqueued. The program may remove references from a queue either -by polling or by blocking until a reference becomes available. Reference -queues are implemented by the {@link java.lang.ref.ReferenceQueue} -class. - -

    The relationship between a registered reference object and its queue is -one-sided. That is, a queue does not keep track of the references that are -registered with it. If a registered reference becomes unreachable itself, then -it will never be enqueued. It is the responsibility of the program using -reference objects to ensure that the objects remain reachable for as long as -the program is interested in their referents. - -

    While some programs will choose to dedicate a thread to removing reference -objects from one or more queues and processing them, this is by no means -necessary. A tactic that often works well is to examine a reference queue in -the course of performing some other fairly-frequent action. For example, a -hashtable that uses weak references to implement weak keys could poll its -reference queue each time the table is accessed. This is how the {@link -java.util.WeakHashMap} class works. Because the {@link -java.lang.ref.ReferenceQueue#poll ReferenceQueue.poll} method simply -checks an internal data structure, this check will add little overhead to the -hashtable access methods. - - -

    Automatically-cleared references

    - -Soft and weak references are automatically cleared by the collector before -being added to the queues with which they are registered, if any. Therefore -soft and weak references need not be registered with a queue in order to be -useful, while phantom references do. An object that is reachable via phantom -references will remain so until all such references are cleared or themselves -become unreachable. - - - -

    Reachability

    - -Going from strongest to weakest, the different levels of reachability reflect -the life cycle of an object. They are operationally defined as follows: - -
      - -
    • An object is strongly reachable if it can be reached by some -thread without traversing any reference objects. A newly-created object is -strongly reachable by the thread that created it. - -
    • An object is softly reachable if it is not strongly reachable but -can be reached by traversing a soft reference. - -
    • An object is weakly reachable if it is neither strongly nor -softly reachable but can be reached by traversing a weak reference. When the -weak references to a weakly-reachable object are cleared, the object becomes -eligible for finalization. - -
    • An object is phantom reachable if it is neither strongly, softly, -nor weakly reachable, it has been finalized, and some phantom reference refers -to it. - -
    • Finally, an object is unreachable, and therefore eligible for -reclamation, when it is not reachable in any of the above ways. - -
    - - -@author Mark Reinhold -@since 1.2 - - - - diff --git a/jdk/src/java.base/share/classes/java/nio/channels/spi/package-info.java b/jdk/src/java.base/share/classes/java/nio/channels/spi/package-info.java new file mode 100644 index 00000000000..84365567a89 --- /dev/null +++ b/jdk/src/java.base/share/classes/java/nio/channels/spi/package-info.java @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2000, 2009, 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. + */ + +/** + * Service-provider classes for the {@link java.nio.channels} + * package. + * + *

    Only developers who are defining new selector providers or + * asynchronous channel providers should need to make direct use of + * this package.

    + * + *

    Unless otherwise noted, passing a {@code null} argument to a + * constructor or method in any class or interface in this package + * will cause a {@link java.lang.NullPointerException + * NullPointerException} to be thrown. + * + * + * @since 1.4 + * @author Mark Reinhold + * @author JSR-51 Expert Group + */ +package java.nio.channels.spi; diff --git a/jdk/src/java.base/share/classes/java/nio/channels/spi/package.html b/jdk/src/java.base/share/classes/java/nio/channels/spi/package.html deleted file mode 100644 index a6f8cbfdcb3..00000000000 --- a/jdk/src/java.base/share/classes/java/nio/channels/spi/package.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - -Service-provider classes for the {@link java.nio.channels} package. - -

    Only developers who are defining new selector providers or asynchronous -channel providers should need to make direct use of this package.

    - -

    Unless otherwise noted, passing a null argument to a constructor -or method in any class or interface in this package will cause a {@link -java.lang.NullPointerException NullPointerException} to be thrown. - - -@since 1.4 -@author Mark Reinhold -@author JSR-51 Expert Group - - - diff --git a/jdk/src/java.base/share/classes/java/nio/charset/package-info.java b/jdk/src/java.base/share/classes/java/nio/charset/package-info.java new file mode 100644 index 00000000000..e18f568004a --- /dev/null +++ b/jdk/src/java.base/share/classes/java/nio/charset/package-info.java @@ -0,0 +1,90 @@ +/* + * Copyright (c) 2001, 2010, 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. + */ + +/** + * Defines charsets, decoders, and encoders, for translating between + * bytes and Unicode characters. + * + *

    + * + * + * + * + * + * + * + * + * + * + * + * + *
    Class nameDescription
    {@link java.nio.charset.Charset}A named mapping between characters
    and bytes
    {@link java.nio.charset.CharsetDecoder}Decodes bytes into characters
    {@link java.nio.charset.CharsetEncoder}  Encodes characters into bytes
    {@link java.nio.charset.CoderResult}  Describes coder results
    {@link java.nio.charset.CodingErrorAction}  Describes actions to take when
    coding errors are detected
    + * + *

    A charset is named mapping between sequences of + * sixteen-bit Unicode characters and sequences of bytes, in the sense + * defined in RFC 2278. + * A decoder is an engine which transforms bytes in a specific + * charset into characters, and an encoder is an engine which + * transforms characters into bytes. Encoders and decoders operate on + * byte and character buffers. They are collectively referred to as + * coders. + * + *

    The {@link java.nio.charset.Charset} class defines methods for + * creating coders for a given charset and for retrieving the various + * names associated with a charset. It also defines static methods + * for testing whether a particular charset is supported, for locating + * charset instances by name, and for constructing a map that contains + * every charset for which support is available in the current Java + * virtual machine. + * + *

    Most users will not use these classes directly; instead they + * will use the existing charset-related constructors and methods in + * the {@link java.lang.String} class, together with the existing + * {@link java.io.InputStreamReader} and {@link + * java.io.OutputStreamWriter} classes, all of whose implementations + * have been reworked to make use of the charset facilities defined in + * this package. A small number of changes have been made to the + * {@link java.io.InputStreamReader} and {@link + * java.io.OutputStreamWriter} classes in order to allow explicit + * charset objects to be specified in the construction of instances of + * those classes. + * + *

    Support for new charsets can be made available via the + * interface defined in the {@link + * java.nio.charset.spi.CharsetProvider} class in the {@link + * java.nio.charset.spi} package. + * + *

    Unless otherwise noted, passing a null argument to a + * constructor or method in any class or interface in this package + * will cause a {@link java.lang.NullPointerException + * NullPointerException} to be thrown. + * + * + * @since 1.4 + * @author Mark Reinhold + * @author JSR-51 Expert Group + */ +package java.nio.charset; diff --git a/jdk/src/java.base/share/classes/java/nio/charset/package.html b/jdk/src/java.base/share/classes/java/nio/charset/package.html deleted file mode 100644 index 69b160b8139..00000000000 --- a/jdk/src/java.base/share/classes/java/nio/charset/package.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - -Defines charsets, decoders, and encoders, for translating between bytes and -Unicode characters. - -

    - - - - - - - - - - - - -

    Class name

    Description

    {@link java.nio.charset.Charset}A named mapping between characters
    and bytes
    {@link java.nio.charset.CharsetDecoder}Decodes bytes into characters
    {@link java.nio.charset.CharsetEncoder}  Encodes characters into bytes
    {@link java.nio.charset.CoderResult}  Describes coder results
    {@link java.nio.charset.CodingErrorAction}  Describes actions to take when
    coding errors are detected
    - -

    A charset is named mapping between sequences of sixteen-bit Unicode -characters and sequences of bytes, in the sense defined in RFC 2278. A -decoder is an engine which transforms bytes in a specific charset into -characters, and an encoder is an engine which transforms characters into -bytes. Encoders and decoders operate on byte and character buffers. They are -collectively referred to as coders. - -

    The {@link java.nio.charset.Charset} class defines methods for creating -coders for a given charset and for retrieving the various names associated with -a charset. It also defines static methods for testing whether a particular -charset is supported, for locating charset instances by name, and for -constructing a map that contains every charset for which support is available -in the current Java virtual machine. - -

    Most users will not use these classes directly; instead they will use the -existing charset-related constructors and methods in the {@link -java.lang.String} class, together with the existing {@link -java.io.InputStreamReader} and {@link java.io.OutputStreamWriter} classes, all -of whose implementations have been reworked to make use of the charset -facilities defined in this package. A small number of changes have been made -to the {@link java.io.InputStreamReader} and {@link java.io.OutputStreamWriter} -classes in order to allow explicit charset objects to be specified in the -construction of instances of those classes. - -

    Support for new charsets can be made available via the interface defined in -the {@link java.nio.charset.spi.CharsetProvider} class in the {@link -java.nio.charset.spi} package. - -

    Unless otherwise noted, passing a null argument to a constructor -or method in any class or interface in this package will cause a {@link -java.lang.NullPointerException NullPointerException} to be thrown. - - -@since 1.4 -@author Mark Reinhold -@author JSR-51 Expert Group - - - diff --git a/jdk/src/java.base/share/classes/java/nio/charset/spi/package-info.java b/jdk/src/java.base/share/classes/java/nio/charset/spi/package-info.java new file mode 100644 index 00000000000..8e5e81da703 --- /dev/null +++ b/jdk/src/java.base/share/classes/java/nio/charset/spi/package-info.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2001, 2005, 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. + */ + +/** + * Service-provider classes for the {@link java.nio.charset} package. + * + *

    Only developers who are defining new charsets should need to + * make direct use of this package.

    + * + *

    Unless otherwise noted, passing a {@code null} argument to a + * constructor or method in any class or interface in this package + * will cause a {@link java.lang.NullPointerException + * NullPointerException} to be thrown. + * + * @since 1.4 + * @author Mark Reinhold + * @author JSR-51 Expert Group + */ +package java.nio.charset.spi; diff --git a/jdk/src/java.base/share/classes/java/nio/charset/spi/package.html b/jdk/src/java.base/share/classes/java/nio/charset/spi/package.html deleted file mode 100644 index a7b7ab18879..00000000000 --- a/jdk/src/java.base/share/classes/java/nio/charset/spi/package.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - -Service-provider classes for the {@link java.nio.charset} package. - -

    Only developers who are defining new charsets should need to make direct -use of this package.

    - -

    Unless otherwise noted, passing a null argument to a constructor -or method in any class or interface in this package will cause a {@link -java.lang.NullPointerException NullPointerException} to be thrown. - - -@since 1.4 -@author Mark Reinhold -@author JSR-51 Expert Group - - - diff --git a/jdk/src/java.base/share/classes/java/nio/package-info.java b/jdk/src/java.base/share/classes/java/nio/package-info.java new file mode 100644 index 00000000000..374e0bb59a9 --- /dev/null +++ b/jdk/src/java.base/share/classes/java/nio/package-info.java @@ -0,0 +1,141 @@ +/* + * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * Defines buffers, which are containers for data, and provides an + * overview of the other NIO packages. + * + * + *

    The central abstractions of the NIO APIs are:

    + * + *
      + * + *
    • Buffers, which are containers for data; + *

    • + * + *
    • Charsets and their + * associated decoders and encoders,
      which + * translate between bytes and Unicode characters;

    • + * + *
    • Channels of + * various types, which represent connections
      to entities + * capable of performing I/O operations; and

    • + * + *
    • Selectors and selection keys, which + * together with
      selectable channels define a multiplexed, + * non-blocking
      I/O
       facility.

    • + * + *
    + * + *

    The java.nio package defines the buffer classes, which + * are used throughout the NIO APIs. The charset API is defined in + * the {@link java.nio.charset} package, and the channel and selector + * APIs are defined in the {@link java.nio.channels} package. Each of + * these subpackages has its own service-provider (SPI) subpackage, + * the contents of which can be used to extend the platform's default + * implementations or to construct alternative implementations. + * + * + * + *

    + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + *
    BuffersDescription
    {@link java.nio.Buffer}Position, limit, and capacity; + *
    clear, flip, rewind, and mark/reset
      {@link java.nio.ByteBuffer}Get/put, compact, views; allocate, wrap
        {@link java.nio.MappedByteBuffer}  A byte buffer mapped to a file
      {@link java.nio.CharBuffer}Get/put, compact; allocate, wrap
      {@link java.nio.DoubleBuffer}    ' '
      {@link java.nio.FloatBuffer}    ' '
      {@link java.nio.IntBuffer}    ' '
      {@link java.nio.LongBuffer}    ' '
      {@link java.nio.ShortBuffer}    ' '
    {@link java.nio.ByteOrder}Typesafe enumeration for byte orders
    + * + *

    A buffer is a container for a fixed amount of data of a + * specific primitive type. In addition to its content a buffer has a + * position, which is the index of the next element to be read + * or written, and a limit, which is the index of the first + * element that should not be read or written. The base {@link + * java.nio.Buffer} class defines these properties as well as methods + * for clearing, flipping, and rewinding, for + * marking the current position, and for resetting the + * position to the previous mark. + * + *

    There is a buffer class for each non-boolean primitive type. + * Each class defines a family of get and put methods + * for moving data out of and in to a buffer, methods for + * compacting, duplicating, and slicing a buffer, + * and static methods for allocating a new buffer as well as + * for wrapping an existing array into a buffer. + * + *

    Byte buffers are distinguished in that they can be used as the + * sources and targets of I/O operations. They also support several + * features not found in the other buffer classes: + * + *

      + * + *
    • A byte buffer can be allocated as a direct buffer, in which + * case the Java virtual machine will make a best effort to perform + * native I/O operations directly upon it.

    • + * + *
    • A byte buffer can be created by {@link + * java.nio.channels.FileChannel#map mapping} a region of a + * file directly into memory, in which case a few additional + * file-related operations defined in the {@link + * java.nio.MappedByteBuffer} class are available.

    • + * + *
    • A byte buffer provides access to its content as either a + * heterogeneous or homogeneous sequence of binary data of any + * non-boolean primitive type, in either big-endian or little-endian + * byte order.

    • + * + *
    + * + *

    Unless otherwise noted, passing a null argument to a + * constructor or method in any class or interface in this package + * will cause a {@link java.lang.NullPointerException + * NullPointerException} to be thrown. + * + * @since 1.4 + * @author Mark Reinhold + * @author JSR-51 Expert Group + */ +package java.nio; diff --git a/jdk/src/java.base/share/classes/java/nio/package.html b/jdk/src/java.base/share/classes/java/nio/package.html deleted file mode 100644 index 1ce7131f869..00000000000 --- a/jdk/src/java.base/share/classes/java/nio/package.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - -Defines buffers, which are containers for data, and provides an overview of the -other NIO packages. - - -

    The central abstractions of the NIO APIs are:

    - -
      - -
    • Buffers, which are containers for data; -

    • - -
    • Charsets and their - associated decoders and encoders,
      which translate between - bytes and Unicode characters;

    • - -
    • Channels of - various types, which represent connections
      to entities capable of - performing I/O operations; and

    • - -
    • Selectors and selection keys, which together with
      - selectable channels define a multiplexed, non-blocking
      - I/O
       facility.

    • - -
    - -

    The java.nio package defines the buffer classes, which are used -throughout the NIO APIs. The charset API is defined in the {@link -java.nio.charset} package, and the channel and selector APIs are defined in the -{@link java.nio.channels} package. Each of these subpackages has its own -service-provider (SPI) subpackage, the contents of which can be used to extend -the platform's default implementations or to construct alternative -implementations. - - - - -

    - - - - - - - - - - - - - - - - - - - - - -

    Buffers

    Description

    {@link java.nio.Buffer}Position, limit, and capacity; -
    clear, flip, rewind, and mark/reset
      {@link java.nio.ByteBuffer}Get/put, compact, views; allocate, wrap
        {@link java.nio.MappedByteBuffer}  A byte buffer mapped to a file
      {@link java.nio.CharBuffer}Get/put, compact; allocate, wrap
      {@link java.nio.DoubleBuffer}    ' '
      {@link java.nio.FloatBuffer}    ' '
      {@link java.nio.IntBuffer}    ' '
      {@link java.nio.LongBuffer}    ' '
      {@link java.nio.ShortBuffer}    ' '
    {@link java.nio.ByteOrder}Typesafe enumeration for byte orders
    - -

    A buffer is a container for a fixed amount of data of a specific -primitive type. In addition to its content a buffer has a position, -which is the index of the next element to be read or written, and a -limit, which is the index of the first element that should not be read -or written. The base {@link java.nio.Buffer} class defines these properties as -well as methods for clearing, flipping, and rewinding, for -marking the current position, and for resetting the position to -the previous mark. - -

    There is a buffer class for each non-boolean primitive type. Each class -defines a family of get and put methods for moving data out of -and in to a buffer, methods for compacting, duplicating, and -slicing a buffer, and static methods for allocating a new buffer -as well as for wrapping an existing array into a buffer. - -

    Byte buffers are distinguished in that they can be used as the sources and -targets of I/O operations. They also support several features not found in the -other buffer classes: - -

      - -
    • A byte buffer can be allocated as a - direct buffer, in which case the Java virtual machine will make a - best effort to perform native I/O operations directly upon it.

    • - -
    • A byte buffer can be created by {@link - java.nio.channels.FileChannel#map mapping} a region of a - file directly into memory, in which case a few additional file-related - operations defined in the {@link java.nio.MappedByteBuffer} class are - available.

    • - -
    • A byte buffer provides access to its content as either a heterogeneous - or homogeneous sequence of binary data - of any non-boolean primitive type, in either big-endian or little-endian byte order.

    • - -
    - -

    Unless otherwise noted, passing a null argument to a constructor -or method in any class or interface in this package will cause a {@link -java.lang.NullPointerException NullPointerException} to be thrown. - -@since 1.4 -@author Mark Reinhold -@author JSR-51 Expert Group - - - diff --git a/jdk/src/java.base/share/classes/java/text/package-info.java b/jdk/src/java.base/share/classes/java/text/package-info.java new file mode 100644 index 00000000000..b4c411844bd --- /dev/null +++ b/jdk/src/java.base/share/classes/java/text/package-info.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 1998, 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. + */ + +/** + * Provides classes and interfaces for handling text, dates, numbers, + * and messages in a manner independent of natural languages. This + * means your main application or applet can be written to be + * language-independent, and it can rely upon separate, + * dynamically-linked localized resources. This allows the flexibility + * of adding localizations for new localizations at any time. + * + *

    These classes are capable of formatting dates, numbers, and + * messages, parsing; searching and sorting strings; and iterating + * over characters, words, sentences, and line breaks. This package + * contains three main groups of classes and interfaces: + * + *

      + *
    • Classes for iteration over text + *
    • Classes for formatting and parsing + *
    • Classes for string collation + *
    + * + * @since 1.1 + */ +package java.text; diff --git a/jdk/src/java.base/share/classes/java/text/package.html b/jdk/src/java.base/share/classes/java/text/package.html deleted file mode 100644 index 3e9e51f15c7..00000000000 --- a/jdk/src/java.base/share/classes/java/text/package.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - -Provides classes and interfaces for handling text, dates, numbers, and messages -in a manner independent of natural languages. This means your main application -or applet can be written to be language-independent, and it can rely upon -separate, dynamically-linked localized resources. This allows the flexibility -of adding localizations for new localizations at any time. -

    -These classes are capable of formatting dates, numbers, and messages, parsing; -searching and sorting strings; and iterating over characters, words, sentences, -and line breaks. This package contains three main groups of classes and -interfaces: -

      -
    • Classes for iteration over text -
    • Classes for formatting and parsing -
    • Classes for string collation -
    - - -@since 1.1 - - diff --git a/jdk/src/java.base/share/classes/java/text/spi/package-info.java b/jdk/src/java.base/share/classes/java/text/spi/package-info.java new file mode 100644 index 00000000000..3b8fa8bc9a1 --- /dev/null +++ b/jdk/src/java.base/share/classes/java/text/spi/package-info.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2005, 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. + */ + +/** + * Service provider classes for the classes in the java.text package. + * + * @since 1.6 + */ +package java.text.spi; diff --git a/jdk/src/java.base/share/classes/java/text/spi/package.html b/jdk/src/java.base/share/classes/java/text/spi/package.html deleted file mode 100644 index fa08ec1fb35..00000000000 --- a/jdk/src/java.base/share/classes/java/text/spi/package.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - -Service provider classes for the classes in the java.text package. - - -@since 1.6 - - diff --git a/jdk/src/java.base/share/classes/java/util/jar/package-info.java b/jdk/src/java.base/share/classes/java/util/jar/package-info.java new file mode 100644 index 00000000000..2a7431b9577 --- /dev/null +++ b/jdk/src/java.base/share/classes/java/util/jar/package-info.java @@ -0,0 +1,49 @@ +/* + * Copyright (c) 1998, 2006, 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. + */ + +/** + * Provides classes for reading and writing the JAR (Java ARchive) + * file format, which is based on the standard ZIP file format with an + * optional manifest file. The manifest stores meta-information about + * the JAR file contents and is also used for signing JAR files. + * + *

    Package Specification

    + * + * The java.util.jar package is based on the following + * specifications: + * + * + * + * @since 1.2 + */ +package java.util.jar; diff --git a/jdk/src/java.base/share/classes/java/util/jar/package.html b/jdk/src/java.base/share/classes/java/util/jar/package.html deleted file mode 100644 index 5c3a366122c..00000000000 --- a/jdk/src/java.base/share/classes/java/util/jar/package.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - - - -Provides classes for reading and writing the JAR (Java ARchive) file -format, which is based on the standard ZIP file format with an -optional manifest file. The manifest stores meta-information about the -JAR file contents and is also used for signing JAR files. - - -

    Package Specification

    - -The java.util.jar package is based on the following specifications: - - - - -@since 1.2 - - diff --git a/jdk/src/java.base/share/classes/java/util/package-info.java b/jdk/src/java.base/share/classes/java/util/package-info.java new file mode 100644 index 00000000000..ab706e0d179 --- /dev/null +++ b/jdk/src/java.base/share/classes/java/util/package-info.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 1998, 2006, 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. + */ + +/** + * Contains the collections framework, legacy collection classes, + * event model, date and time facilities, internationalization, and + * miscellaneous utility classes (a string tokenizer, a random-number + * generator, and a bit array). + * + *

    Package Specification

    + * + * + *

    Related Documentation

    + * For overviews, tutorials, examples, guides, and tool documentation, + * please see: + * + * + * @since 1.0 + */ +package java.util; diff --git a/jdk/src/java.base/share/classes/java/util/package.html b/jdk/src/java.base/share/classes/java/util/package.html deleted file mode 100644 index eb77a146b0f..00000000000 --- a/jdk/src/java.base/share/classes/java/util/package.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - -Contains the collections framework, legacy collection classes, event model, -date and time facilities, internationalization, and miscellaneous utility -classes (a string tokenizer, a random-number generator, and a bit array). - -

    Package Specification

    - - -

    Related Documentation

    -For overviews, tutorials, examples, guides, and tool documentation, please see: - - -@since 1.0 - - diff --git a/jdk/src/java.base/share/classes/java/util/regex/package-info.java b/jdk/src/java.base/share/classes/java/util/regex/package-info.java new file mode 100644 index 00000000000..2907f10c003 --- /dev/null +++ b/jdk/src/java.base/share/classes/java/util/regex/package-info.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2000, 2006, 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. + */ + +/** + * Classes for matching character sequences against patterns specified + * by regular expressions. + * + *

    An instance of the {@link java.util.regex.Pattern} class + * represents a regular expression that is specified in string form in + * a syntax similar to that used by Perl. + * + *

    Instances of the {@link java.util.regex.Matcher} class are used + * to match character sequences against a given pattern. Input is + * provided to matchers via the {@link java.lang.CharSequence} + * interface in order to support matching against characters from a + * wide variety of input sources.

    + * + *

    Unless otherwise noted, passing a null argument to a + * method in any class or interface in this package will cause a + * {@link java.lang.NullPointerException NullPointerException} to be + * thrown. + * + *

    Related Documentation

    + * + *

    An excellent tutorial and overview of regular expressions is Mastering Regular + * Expressions, Jeffrey E. F. Friedl, O'Reilly and Associates, + * 1997.

    + * + * @since 1.4 + * @author Mike McCloskey + * @author Mark Reinhold + */ +package java.util.regex; diff --git a/jdk/src/java.base/share/classes/java/util/regex/package.html b/jdk/src/java.base/share/classes/java/util/regex/package.html deleted file mode 100644 index 5be2f0bcc89..00000000000 --- a/jdk/src/java.base/share/classes/java/util/regex/package.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - - - - -Classes for matching character sequences against patterns specified by regular -expressions. - -

    An instance of the {@link java.util.regex.Pattern} class represents a -regular expression that is specified in string form in a syntax similar to -that used by Perl. - -

    Instances of the {@link java.util.regex.Matcher} class are used to match -character sequences against a given pattern. Input is provided to matchers via -the {@link java.lang.CharSequence} interface in order to support matching -against characters from a wide variety of input sources.

    - -

    Unless otherwise noted, passing a null argument to a method -in any class or interface in this package will cause a -{@link java.lang.NullPointerException NullPointerException} to be thrown. - -

    Related Documentation

    - -

    An excellent tutorial and overview of regular expressions is Mastering Regular -Expressions, Jeffrey E. F. Friedl, O'Reilly and Associates, 1997.

    - - - -@since 1.4 -@author Mike McCloskey -@author Mark Reinhold - - - diff --git a/jdk/src/java.base/share/classes/java/util/spi/package-info.java b/jdk/src/java.base/share/classes/java/util/spi/package-info.java new file mode 100644 index 00000000000..b70147cf322 --- /dev/null +++ b/jdk/src/java.base/share/classes/java/util/spi/package-info.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2005, 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. + */ + +/** + * Service provider classes for the classes in the java.util package. + * + * @since 1.6 + */ +package java.util.spi; diff --git a/jdk/src/java.base/share/classes/java/util/spi/package.html b/jdk/src/java.base/share/classes/java/util/spi/package.html deleted file mode 100644 index ce49fb2a414..00000000000 --- a/jdk/src/java.base/share/classes/java/util/spi/package.html +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - -Service provider classes for the classes in the java.util package. - - -@since 1.6 - - diff --git a/jdk/src/java.base/share/classes/javax/crypto/interfaces/package-info.java b/jdk/src/java.base/share/classes/javax/crypto/interfaces/package-info.java new file mode 100644 index 00000000000..9f59e8ffed6 --- /dev/null +++ b/jdk/src/java.base/share/classes/javax/crypto/interfaces/package-info.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 1999, 2007, 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. + */ + +/** + * Provides interfaces for Diffie-Hellman keys as defined in RSA + * Laboratories' PKCS #3. + * + *

    Note that these interfaces are intended only for key + * implementations whose key material is accessible and + * available. These interfaces are not intended for key implementations + * whose key material resides in inaccessible, protected storage (such + * as in a hardware device). + * + *

    For more developer information on how to use these interfaces, + * including information on how to design Key classes for + * hardware devices, please refer to the cryptographic provider + * developer guide: + * + *

    + * + *

    Package Specification

    + * + *
      + *
    • PKCS #3: Diffie-Hellman Key-Agreement Standard, Version 1.4, + * November 1993.
    • + *
    + * + *

    Related Documentation

    + * + * For further documentation, please see: + * + * + * @since 1.4 + */ +package javax.crypto.interfaces; diff --git a/jdk/src/java.base/share/classes/javax/crypto/interfaces/package.html b/jdk/src/java.base/share/classes/javax/crypto/interfaces/package.html deleted file mode 100644 index c43000e80a7..00000000000 --- a/jdk/src/java.base/share/classes/javax/crypto/interfaces/package.html +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - - -Provides interfaces for Diffie-Hellman keys as defined in -RSA Laboratories' PKCS #3. -

    -Note that these interfaces are intended only -for key implementations whose key material -is accessible and available. These -interfaces are not intended for key -implementations whose key material resides -in inaccessible, protected storage (such as -in a hardware device). -

    -For more developer information on how to use -these interfaces, including information on -how to design Key classes -for hardware devices, please refer to the -cryptographic provider developer guide: -

    - -

    Package Specification

    - -
      -
    • PKCS #3: Diffie-Hellman Key-Agreement Standard, Version 1.4, - November 1993.
    • -
    - -

    Related Documentation

    - -For further documentation, please see: - - -@since 1.4 - - diff --git a/jdk/src/java.base/share/classes/javax/crypto/package-info.java b/jdk/src/java.base/share/classes/javax/crypto/package-info.java new file mode 100644 index 00000000000..754b5f643c8 --- /dev/null +++ b/jdk/src/java.base/share/classes/javax/crypto/package-info.java @@ -0,0 +1,68 @@ +/* + * Copyright (c) 1999, 2011, 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. + */ + +/** + * Provides the classes and interfaces for cryptographic + * operations. The cryptographic operations defined in this package + * include encryption, key generation and key agreement, and Message + * Authentication Code (MAC) generation. + * + *

    Support for encryption includes symmetric, asymmetric, block, + * and stream ciphers. This package also supports secure streams and + * sealed objects. + * + *

    Many of the classes provided in this package are provider-based. + * The class itself defines a programming interface to which + * applications may write. The implementations themselves may then be + * written by independent third-party vendors and plugged in + * seamlessly as needed. Therefore application developers may take + * advantage of any number of provider-based implementations without + * having to add or rewrite code. + * + *

    + * + *

    Related Documentation

    + * + * For further documentation, please see: + * + * + * @since 1.4 + */ +package javax.crypto; diff --git a/jdk/src/java.base/share/classes/javax/crypto/package.html b/jdk/src/java.base/share/classes/javax/crypto/package.html deleted file mode 100644 index c1d46ff528c..00000000000 --- a/jdk/src/java.base/share/classes/javax/crypto/package.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -Provides the classes and interfaces for cryptographic operations. The -cryptographic operations defined in this package include encryption, -key generation and key agreement, and Message Authentication Code -(MAC) generation. - -

    Support for encryption includes symmetric, asymmetric, block, and -stream ciphers. This package also supports secure streams and sealed -objects. - -

    Many of the classes provided in this package are provider-based. The -class itself defines a programming interface to which applications may -write. The implementations themselves may then be written by -independent third-party vendors and plugged in seamlessly as needed. -Therefore application developers may take advantage of any number of -provider-based implementations without having to add or rewrite code. - -

    Package Specification

    - - - -

    Related Documentation

    - -For further documentation, please see: - - -@since 1.4 - - diff --git a/jdk/src/java.base/share/classes/javax/crypto/spec/package-info.java b/jdk/src/java.base/share/classes/javax/crypto/spec/package-info.java new file mode 100644 index 00000000000..a9b4589321e --- /dev/null +++ b/jdk/src/java.base/share/classes/javax/crypto/spec/package-info.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 1999, 2007, 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. + */ + +/** + * Provides classes and interfaces for key specifications and + * algorithm parameter specifications. + * + *

    A key specification is a transparent representation of the key + * material that constitutes a key. A key may be specified in an + * algorithm-specific way, or in an algorithm-independent encoding + * format (such as ASN.1). This package contains key specifications + * for Diffie-Hellman public and private keys, as well as key + * specifications for DES, Triple DES, and PBE secret keys. + * + *

    An algorithm parameter specification is a transparent + * representation of the sets of parameters used with an + * algorithm. This package contains algorithm parameter specifications + * for parameters used with the Diffie-Hellman, DES, Triple DES, PBE, + * RC2 and RC5 algorithms. + * + * + *

      + *
    • PKCS #3: Diffie-Hellman Key-Agreement Standard, Version 1.4, + * November 1993.
    • + *
    • PKCS #5: Password-Based Encryption Standard, Version 1.5, + * November 1993.
    • + *
    • Federal Information Processing Standards Publication (FIPS PUB) 46-2: + * Data Encryption Standard (DES)
    • + *
    + * + *

    Related Documentation

    + * + * For documentation that includes information about algorithm + * parameter and key specifications, please see: + * + * + * + * @since 1.4 + */ +package javax.crypto.spec; diff --git a/jdk/src/java.base/share/classes/javax/crypto/spec/package.html b/jdk/src/java.base/share/classes/javax/crypto/spec/package.html deleted file mode 100644 index 7f563fbb372..00000000000 --- a/jdk/src/java.base/share/classes/javax/crypto/spec/package.html +++ /dev/null @@ -1,77 +0,0 @@ - - - - - - - -Provides classes and interfaces for key specifications and algorithm -parameter specifications. - -

    A key specification is a transparent representation of the key -material that constitutes a key. A key may be specified in an -algorithm-specific way, or in an algorithm-independent encoding format -(such as ASN.1). This package contains key specifications for -Diffie-Hellman public and private keys, as well as key specifications for DES, -Triple DES, and PBE secret keys. - -

    An algorithm parameter specification is a transparent representation -of the sets of parameters used with an algorithm. This package contains -algorithm parameter specifications for parameters used with the -Diffie-Hellman, DES, Triple DES, PBE, RC2 and RC5 algorithms. - -

    Package Specification

    - -
      -
    • PKCS #3: Diffie-Hellman Key-Agreement Standard, Version 1.4, - November 1993.
    • -
    • PKCS #5: Password-Based Encryption Standard, Version 1.5, - November 1993.
    • -
    • Federal Information Processing Standards Publication (FIPS PUB) 46-2: - Data Encryption Standard (DES)
    • -
    - -

    Related Documentation

    - -For documentation that includes information about algorithm parameter -and key specifications, please see: - - -@since 1.4 - - diff --git a/jdk/src/java.base/share/classes/javax/net/package-info.java b/jdk/src/java.base/share/classes/javax/net/package-info.java new file mode 100644 index 00000000000..71de9e40091 --- /dev/null +++ b/jdk/src/java.base/share/classes/javax/net/package-info.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 1999, 2001, 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. + */ + +/** + * Provides classes for networking applications. These classes include + * factories for creating sockets. Using socket factories you can + * encapsulate socket creation and configuration behavior. + * + * @since 1.4 + */ +package javax.net; diff --git a/jdk/src/java.base/share/classes/javax/net/package.html b/jdk/src/java.base/share/classes/javax/net/package.html deleted file mode 100644 index 35845a1830a..00000000000 --- a/jdk/src/java.base/share/classes/javax/net/package.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - -Provides classes for networking applications. These classes include -factories for creating sockets. Using socket factories you can encapsulate -socket creation and configuration behavior. - - -@since 1.4 - - diff --git a/jdk/src/java.base/share/classes/javax/net/ssl/package-info.java b/jdk/src/java.base/share/classes/javax/net/ssl/package-info.java new file mode 100644 index 00000000000..9fd6868587e --- /dev/null +++ b/jdk/src/java.base/share/classes/javax/net/ssl/package-info.java @@ -0,0 +1,41 @@ +/* + * Copyright (c) 1999, 2011, 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. + */ + +/** + * Provides classes for the secure socket package. Using the secure + * socket classes, you can communicate using SSL or a related security + * protocol to reliably detect any errors introduced into the network + * byte stream and to optionally encrypt the data and/or authenticate + * the communicating peers. + * + * + * + * @since 1.4 + */ +package javax.net.ssl; diff --git a/jdk/src/java.base/share/classes/javax/net/ssl/package.html b/jdk/src/java.base/share/classes/javax/net/ssl/package.html deleted file mode 100644 index d75e1d397a0..00000000000 --- a/jdk/src/java.base/share/classes/javax/net/ssl/package.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - -Provides classes for the secure socket package. Using the secure socket -classes, you can communicate using SSL or a related security protocol -to reliably detect any errors introduced into the network byte stream -and to optionally encrypt the data and/or authenticate the communicating peers. - -

    Package Specification

    - - - - - -@since 1.4 - - diff --git a/jdk/src/java.base/share/classes/sun/reflect/package.html b/jdk/src/java.base/share/classes/sun/reflect/package.html deleted file mode 100644 index 18ff61624bb..00000000000 --- a/jdk/src/java.base/share/classes/sun/reflect/package.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - -

    - - Licensee impact of JDK 1.4 reflection changes - -

    -

    - -Sun's JDK 1.4 contains a new implementation of java.lang.reflect which -offers substantially higher performance than previous JDKs' native -code. Licensees can at their discretion port these changes. There are -no public API or documentation changes associated with the new -reflection implementation aside from a few minor clarifications in the -specifications of Method.invoke(), Constructor.newInstance(), and a -few methods in java.lang.reflect.Field. - -

    -

    - -The bulk of the new implementation is Java programming language code -which generates bytecodes, and is therefore portable. If licensees -desire to port it, the following JVM changes are required: - -

      -
    1. The following four new JVM entry points must be added: - -
        -
      • JVM_GetClassDeclaredConstructors -
      • JVM_GetClassDeclaredFields -
      • JVM_GetClassDeclaredMethods -
      • JVM_GetClassAccessFlags -
      - -The first three return the declared constructors, fields, and methods -for a given class, with an option to return only the public ones. They -are similar in functionality to the earlier GetClassConstructors, -GetClassFields, and GetClassMethods. JVM_GetClassDeclaredFields and -JVM_GetClassDeclaredMethods must intern the Strings for the names of -the Field and Method objects returned. The fouth returns the access -flags for a given class as marked in the class file, as opposed to in -the InnerClasses attribute if the class is an inner class, and -therefore differs from JVM_GetClassModifiers for inner classes (most -importantly, protected inner classes; see 4471811.) - -
    2. The JVM's link resolver must be modified to allow all field and -method references from subclasses of sun.reflect.MagicAccessorImpl to -any other class (even to private members of other classes) to -succeed. This allows setAccessible() and its associated checks to be -implemented in Java. - -
    3. The code which calls the verifier must skip verification for all -subclasses of sun.reflect.MagicAccessorImpl. (It was originally -intended that only a subset of the stub classes used for serialization -would not pass the verifier, specifically, those subclassing -SerializationConstructorAccessorImpl; see 4486457 for a case where -this does not work.) - -
    4. The stack walker for security checks must be modified to skip not -only all Method.invoke() frames, but also any frames for which the -class is a subclass of sun.reflect.MethodAccessorImpl. - -
    5. The JVM entry points JVM_InvokeMethod and -JVM_NewInstanceFromConstructor are currently still used because the -first invocation of the bytecode-based reflection is currently slower -than the original native code. The security checks they perform can, -however, be disabled, as they are now performed by Java programming -language code. - -
    - -

    -

    - -The following changes were discovered to be necessary for backward -compatibility with certain applications (see bug 4474172): - -

      - -
    1. The existing JVM entry point JVM_LatestUserDefinedLoader -(typically used in applications which rely on the 1.1 security -framework) must skip reflection-related frames in its stack walk: -specifically all frames associated with subclasses of -sun.reflect.MethodAccessorImpl and -sun.reflect.ConstructorAccessorImpl. - -
    2. The new reflection implementation can cause class loading to -occur in previously-unexpected places (namely during reflective -calls). This can cause class loaders which contain subtle bugs to -break. In general it is not possible to guarantee complete backward -bug compatibility, but one kind of bug has been observed more than -once: the inability of a user-defined loader to handle delegation to -it for a class it has already loaded. The new reflection -implementation is predicated on delegation working properly, as it -loads stub classes into newly-fabricated class loaders of type -sun.reflect.DelegatingClassLoader, one stub class per loader, to allow -unloading of the stub classes to occur more quickly. To handle this -kind of bug, the JVM's internal class lookup mechanism must be -slightly modified to check for instances of -sun.reflect.DelegatingClassLoader as the incoming class loader and -silently traverse the "parent" field once for such loaders before -entering the bulk of the resolution code. This avoids an upcall to -Java programming language code which certain loaders can not handle. - -
    - -

    -

    - -The following JVM entry points may be deleted: - -

      -
    • JVM_GetClassFields -
    • JVM_GetClassMethods -
    • JVM_GetClassConstructors -
    • JVM_GetClassField -
    • JVM_GetClassMethod -
    • JVM_GetClassConstructor -
    • JVM_NewInstance -
    • JVM_GetField -
    • JVM_GetPrimitiveField -
    • JVM_SetField -
    • JVM_SetPrimitiveField -
    - -

    -

    - -To keep using the previous reflection implementation, licensees should -not take changes from Sun's JDK 1.4 relating specifically to the -implementation of reflection in the following classes/methods and -any associated native code: - -

      -
    • java.lang.Class.newInstance0 -
    • java.lang.Class.getClassLoader0 -
    • java.lang.Class.getFields -
    • java.lang.Class.getMethods -
    • java.lang.Class.getDeclaredFields -
    • java.lang.Class.getDeclaredMethods -
    • java.lang.Class.getFields0 -
    • java.lang.Class.getMethods0 -
    • java.lang.Class.getConstructors0 -
    • java.lang.Class.getField0 -
    • java.lang.Class.getMethod0 -
    • java.lang.Class.getConstructor0 -
    • java.lang.ClassLoader.getCallerClassLoader -
    • java.lang.System.getCallerClass -
    • java.lang.reflect.AccessibleObject -
    • java.lang.reflect.Constructor -
    • java.lang.reflect.Field -
    • java.lang.reflect.Method -
    • java.lang.reflect.Modifier -
    • sun.misc.ClassReflector -
    - -

    - From efeb942f9fbfe6a5f411c026d57e18bb4a6fb3c4 Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Fri, 22 May 2015 16:43:39 -0700 Subject: [PATCH 12/36] 8074431: Remove native2ascii tool Reviewed-by: erikj, alanb, okutsu, mfang, naoto --- jdk/make/launcher/Launcher-jdk.dev.gmk | 4 - jdk/src/bsd/doc/man/ja/native2ascii.1 | 24 -- jdk/src/bsd/doc/man/native2ascii.1 | 87 ---- .../share/classes/java/util/Properties.java | 6 +- .../java/util/prefs/WindowsPreferences.java | 4 +- .../sun/tools/native2ascii/A2NFilter.java | 144 ------- .../classes/sun/tools/native2ascii/Main.java | 375 ------------------ .../sun/tools/native2ascii/N2AFilter.java | 74 ---- .../resources/MsgNative2ascii.java | 43 -- .../tools/javac/resources/javac.properties | 2 +- jdk/test/TEST.groups | 2 - jdk/test/sun/tools/native2ascii/A2N_4630463 | 1 - .../tools/native2ascii/A2N_4630463.expected | 1 - jdk/test/sun/tools/native2ascii/A2N_4630971 | 4 - jdk/test/sun/tools/native2ascii/A2N_4701617 | 11 - .../tools/native2ascii/A2N_4701617.expected | 11 - jdk/test/sun/tools/native2ascii/A2N_6247817 | 1 - jdk/test/sun/tools/native2ascii/N2A_4636448 | 1 - .../tools/native2ascii/N2A_4636448.expected | 1 - .../tools/native2ascii/Native2AsciiTests.sh | 129 ------ .../sun/tools/native2ascii/NativeErrors.java | 117 ------ .../sun/tools/native2ascii/Permission.java | 85 ---- .../resources/ImmutableResourceTest.java | 68 ---- jdk/test/sun/tools/native2ascii/test1 | 1 - jdk/test/sun/tools/native2ascii/test3 | 1 - jdk/test/tools/launcher/VersionCheck.java | 1 - 26 files changed, 3 insertions(+), 1195 deletions(-) delete mode 100644 jdk/src/bsd/doc/man/ja/native2ascii.1 delete mode 100644 jdk/src/bsd/doc/man/native2ascii.1 delete mode 100644 jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/A2NFilter.java delete mode 100644 jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/Main.java delete mode 100644 jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/N2AFilter.java delete mode 100644 jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii.java delete mode 100644 jdk/test/sun/tools/native2ascii/A2N_4630463 delete mode 100644 jdk/test/sun/tools/native2ascii/A2N_4630463.expected delete mode 100644 jdk/test/sun/tools/native2ascii/A2N_4630971 delete mode 100644 jdk/test/sun/tools/native2ascii/A2N_4701617 delete mode 100644 jdk/test/sun/tools/native2ascii/A2N_4701617.expected delete mode 100644 jdk/test/sun/tools/native2ascii/A2N_6247817 delete mode 100644 jdk/test/sun/tools/native2ascii/N2A_4636448 delete mode 100644 jdk/test/sun/tools/native2ascii/N2A_4636448.expected delete mode 100644 jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh delete mode 100644 jdk/test/sun/tools/native2ascii/NativeErrors.java delete mode 100644 jdk/test/sun/tools/native2ascii/Permission.java delete mode 100644 jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.java delete mode 100644 jdk/test/sun/tools/native2ascii/test1 delete mode 100644 jdk/test/sun/tools/native2ascii/test3 diff --git a/jdk/make/launcher/Launcher-jdk.dev.gmk b/jdk/make/launcher/Launcher-jdk.dev.gmk index 7d3781707cb..5c01b4fb498 100644 --- a/jdk/make/launcher/Launcher-jdk.dev.gmk +++ b/jdk/make/launcher/Launcher-jdk.dev.gmk @@ -32,7 +32,3 @@ $(eval $(call SetupLauncher,jdeps, \ $(eval $(call SetupLauncher,jimage,\ -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "jdk.tools.jimage.Main"$(COMMA) }')) - -$(eval $(call SetupLauncher,native2ascii, \ - -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.native2ascii.Main"$(COMMA) }')) - diff --git a/jdk/src/bsd/doc/man/ja/native2ascii.1 b/jdk/src/bsd/doc/man/ja/native2ascii.1 deleted file mode 100644 index c7232ea9b2f..00000000000 --- a/jdk/src/bsd/doc/man/ja/native2ascii.1 +++ /dev/null @@ -1,24 +0,0 @@ -." Copyright (c) 1997, 2012, 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. -." -.TH native2ascii 1 "07 May 2011" - -.LP diff --git a/jdk/src/bsd/doc/man/native2ascii.1 b/jdk/src/bsd/doc/man/native2ascii.1 deleted file mode 100644 index 7e7ec7cfaa9..00000000000 --- a/jdk/src/bsd/doc/man/native2ascii.1 +++ /dev/null @@ -1,87 +0,0 @@ -'\" t -.\" Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -.\" -.\" DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -.\" -.\" This code is free software; you can redistribute it and/or modify it -.\" under the terms of the GNU General Public License version 2 only, as -.\" published by the Free Software Foundation. -.\" -.\" 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. -.\" -.\" Arch: generic -.\" Software: JDK 8 -.\" Date: 21 November 2013 -.\" SectDesc: Internationalization Tools -.\" Title: native2ascii.1 -.\" -.if n .pl 99999 -.TH native2ascii 1 "21 November 2013" "JDK 8" "Internationalization Tools" -.\" ----------------------------------------------------------------- -.\" * Define some portability stuff -.\" ----------------------------------------------------------------- -.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.\" http://bugs.debian.org/507673 -.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html -.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -.ie \n(.g .ds Aq \(aq -.el .ds Aq ' -.\" ----------------------------------------------------------------- -.\" * set default formatting -.\" ----------------------------------------------------------------- -.\" disable hyphenation -.nh -.\" disable justification (adjust text to left margin only) -.ad l -.\" ----------------------------------------------------------------- -.\" * MAIN CONTENT STARTS HERE * -.\" ----------------------------------------------------------------- - -.SH NAME -native2ascii \- Creates localizable applications by converting a file with characters in any supported character encoding to one with ASCII and/or Unicode escapes or vice versa\&. -.SH SYNOPSIS -.sp -.nf - -\fBnative2ascii\fR [ \fIinputfile\fR ] [ \fIoutputfile\fR ] -.fi -.sp -.TP -\fIinputfile\fR -The encoded file to be converted to ASCII\&. -.TP -\fIoutputfile\fR -The converted ASCII file\&. -.SH DESCRIPTION -The \f3native2ascii\fR command converts encoded files supported by the Java Runtime Environment (JRE) to files encoded in ASCII, using Unicode escapes (\f3\eu\fR\fIxxxx\fR) notation for all characters that are not part of the ASCII character set\&. This process is required for properties files that contain characters not in ISO-8859-1 character sets\&. The tool can also perform the reverse conversion\&. -.PP -If the \f3outputfile\fR value is omitted, then standard output is used for output\&. If, in addition, the \f3inputfile\fR value is omitted, then standard input is used for input\&. -.SH OPTIONS -.TP --reverse -.br -Perform the reverse operation: Converts a file encoded in ISO-8859-1 with Unicode escapes to a file in any character encoding supported by the JRE\&. -.TP --encoding \fIencoding_name\fR -.br -Specifies the name of the character encoding to be used by the conversion procedure\&. If this option is not present, then the default character encoding (as determined by the \f3java\&.nio\&.charset\&.Charset\&.defaultCharset\fR method) is used\&. The \f3encoding_name\fR string must be the name of a character encoding that is supported by the JRE\&. See Supported Encodings at http://docs\&.oracle\&.com/javase/8/docs/technotes/guides/intl/encoding\&.doc\&.html -.TP --J\fIoption\fR -.br -Passes \f3option\fR to the Java Virtual Machine (JVM), where option is one of the options described on the reference page for the Java application launcher\&. For example, \f3-J-Xms48m\fR sets the startup memory to 48 MB\&. See java(1)\&. -.RE -.br -'pl 8.5i -'bp diff --git a/jdk/src/java.base/share/classes/java/util/Properties.java b/jdk/src/java.base/share/classes/java/util/Properties.java index a075da67d1c..0d983e52f96 100644 --- a/jdk/src/java.base/share/classes/java/util/Properties.java +++ b/jdk/src/java.base/share/classes/java/util/Properties.java @@ -73,8 +73,7 @@ import jdk.internal.util.xml.PropertiesDefaultHandler; * Unicode escapes as defined in section 3.3 of * The Java™ Language Specification; * only a single 'u' character is allowed in an escape - * sequence. The native2ascii tool can be used to convert property files to and - * from other character encodings. + * sequence. * *

    The {@link #loadFromXML(InputStream)} and {@link * #storeToXML(OutputStream, String, String)} methods load and store properties @@ -108,9 +107,6 @@ import jdk.internal.util.xml.PropertiesDefaultHandler; *

    This class is thread-safe: multiple threads can share a single * Properties object without the need for external synchronization. * - * @see native2ascii tool for Solaris - * @see native2ascii tool for Windows - * * @author Arthur van Hoff * @author Michael McCloskey * @author Xueming Shen diff --git a/jdk/src/java.prefs/windows/classes/java/util/prefs/WindowsPreferences.java b/jdk/src/java.prefs/windows/classes/java/util/prefs/WindowsPreferences.java index 63dfcfb166e..1e93cb88a32 100644 --- a/jdk/src/java.prefs/windows/classes/java/util/prefs/WindowsPreferences.java +++ b/jdk/src/java.prefs/windows/classes/java/util/prefs/WindowsPreferences.java @@ -1013,7 +1013,6 @@ class WindowsPreferences extends AbstractPreferences { * description of the encoding algorithm. */ private static String toJavaValueString(byte[] windowsNameArray) { - // Use modified native2ascii algorithm String windowsName = byteArrayToString(windowsNameArray); StringBuilder javaName = new StringBuilder(); char ch; @@ -1055,8 +1054,7 @@ class WindowsPreferences extends AbstractPreferences { * Encoding algorithm adds "/" character to capital letters, i.e. * "A" is encoded as "/A". Character '\' is encoded as '//', * '/' is encoded as '\'. - * Then encoding scheme similar to jdk's native2ascii converter is used - * to convert java string to a byte array of ASCII characters. + * Then convert java string to a byte array of ASCII characters. */ private static byte[] toWindowsValueString(String javaName) { StringBuilder windowsName = new StringBuilder(); diff --git a/jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/A2NFilter.java b/jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/A2NFilter.java deleted file mode 100644 index c36ae889dfa..00000000000 --- a/jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/A2NFilter.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Copyright (c) 2001, 2005, 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. - */ - -/** - * This FilterReader class processes a sequence of characters from - * a source stream containing a mixture of 7-bit ASCII data and - * 'back-tick U' escaped sequences representing characters which have - * the possibility of being encoded in a user specified encoding - * The filter relies on knowing the target encoding and makes a - * determination as to whether a given supplied character in its - * source character stream is encodeable in the target encoding. - * If not, it is remains in its back-tick U escaped form. - */ - -package sun.tools.native2ascii; -import java.io.*; - - -class A2NFilter extends FilterReader { - - // maintain a trailing buffer to hold any incompleted - // unicode escaped sequences - private char[] trailChars = null; - - public A2NFilter(Reader in) { - super(in); - } - - public int read(char[] buf, int off, int len) throws IOException { - int numChars = 0; // how many characters have been read - int retChars = 0; // how many characters we'll return - - char[] cBuf = new char[len]; - int cOffset = 0; // offset at which we'll start reading - boolean eof = false; - - // copy trailing chars from previous invocation to input buffer - if (trailChars != null) { - for (int i = 0; i < trailChars.length; i++) - cBuf[i] = trailChars[i]; - numChars = trailChars.length; - trailChars = null; - } - - int n = in.read(cBuf, numChars, len - numChars); - if (n < 0) { - eof = true; - if (numChars == 0) - return -1; // EOF; - } else { - numChars += n; - } - - for (int i = 0; i < numChars;) { - char c = cBuf[i++]; - - if (c != '\\' || (eof && numChars <= 5)) { - // Not a backslash, so copy and continue - // Always pass non backslash chars straight thru - // for regular encoding. If backslash occurs in - // input stream at the final 5 chars then don't - // attempt to read-ahead and de-escape since these - // are literal occurrences of U+005C which need to - // be encoded verbatim in the target encoding. - buf[retChars++] = c; - continue; - } - - int remaining = numChars - i; - if (remaining < 5) { - // Might be the first character of a unicode escape, but we - // don't have enough characters to tell, so save it and finish - trailChars = new char[1 + remaining]; - trailChars[0] = c; - for (int j = 0; j < remaining; j++) - trailChars[1 + j] = cBuf[i + j]; - break; - } - // At this point we have at least five characters remaining - - c = cBuf[i++]; - if (c != 'u') { - // Not a unicode escape, so copy and continue - buf[retChars++] = '\\'; - buf[retChars++] = c; - continue; - } - - // The next four characters are the hex part of a unicode escape - char rc = 0; - boolean isUE = true; - try { - rc = (char)Integer.parseInt(new String(cBuf, i, 4), 16); - } catch (NumberFormatException x) { - isUE = false; - } - if (isUE && Main.canConvert(rc)) { - // We'll be able to convert this - buf[retChars++] = rc; - i += 4; // Align beyond the current uXXXX sequence - } else { - // We won't, so just retain the original sequence - buf[retChars++] = '\\'; - buf[retChars++] = 'u'; - continue; - } - - } - - return retChars; - } - - public int read() throws IOException { - char[] buf = new char[1]; - - if (read(buf, 0, 1) == -1) - return -1; - else - return (int)buf[0]; - } - -} diff --git a/jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/Main.java b/jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/Main.java deleted file mode 100644 index 00e833228b6..00000000000 --- a/jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/Main.java +++ /dev/null @@ -1,375 +0,0 @@ -/* - * Copyright (c) 1996, 2012, 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. - */ - -/* - */ - -/* - Currently javac and load() method in java.util.Properties - supports only Latin1 encoding input. - But in Asian platforms programmer or message translator - uses the editor which support othere than latin1 encoding - to specify their native language string. - So if programmer or message translator wants to use other than - Latin1 character in his/her program source or properties file - they must convert the file to ASCII plus \udddd notation. - (javac/load() modification is not appropriate due to - time constraints for JDK1.1) - This utility is for the purpose of that conversion. - - NAME - native2ascii - convert native encoding file to ascii file - include \udddd Unicode notation - - SYNOPSIS - native2ascii [options] [inputfile [outputfile]] - - DESCRIPTION - If outputfile is not described standard output is used as - output file, and if inputfile is not also described - stardard input is used as input file. - - Options - - -reverse - convert ascii with \udddd notation to native encoding - - -encoding encoding_name - Specify the encoding name which is used by conversion. - 8859_[1 - 9], JIS, EUCJIS, SJIS is currently supported. - Default encoding is taken from System property "file.encoding". - -*/ - -package sun.tools.native2ascii; - -import java.io.*; -import java.util.*; -import java.text.MessageFormat; -import java.nio.charset.CharsetEncoder; -import java.nio.charset.Charset; -import java.nio.charset.IllegalCharsetNameException; -import java.io.UnsupportedEncodingException; -import java.nio.charset.UnsupportedCharsetException; - -/** - * Main program of the native2ascii - */ - -public class Main { - - String inputFileName = null; - String outputFileName = null; - File tempFile = null; - boolean reverse = false; - static String encodingString = null; - static String defaultEncoding = null; - static CharsetEncoder encoder = null; - - /** - * Run the converter - */ - public synchronized boolean convert(String argv[]) { - List v = new ArrayList<>(2); - File outputFile = null; - boolean createOutputFile = false; - - // Parse arguments - for (int i = 0; i < argv.length; i++) { - if (argv[i].equals("-encoding")) { - if ((i + 1) < argv.length) { - encodingString = argv[++i]; - } else { - error(getMsg("err.bad.arg")); - usage(); - return false; - } - } else if (argv[i].equals("-reverse")) { - reverse = true; - } else { - if (v.size() > 1) { - usage(); - return false; - } - v.add(argv[i]); - } - } - - if (encodingString == null) { - defaultEncoding = Charset.defaultCharset().name(); - } - char[] lineBreak = System.getProperty("line.separator").toCharArray(); - - try { - initializeConverter(); - - if (v.size() == 1) { - inputFileName = v.get(0); - } - - if (v.size() == 2) { - inputFileName = v.get(0); - outputFileName = v.get(1); - createOutputFile = true; - } - - if (createOutputFile) { - outputFile = new File(outputFileName); - if (outputFile.exists() && !outputFile.canWrite()) { - throw new Exception(formatMsg("err.cannot.write", outputFileName)); - } - } - - if (reverse) { - try (BufferedReader reader = getA2NInput(inputFileName); - Writer osw = getA2NOutput(outputFileName);) { - String line; - while ((line = reader.readLine()) != null) { - osw.write(line.toCharArray()); - osw.write(lineBreak); - if (outputFileName == null) { // flush stdout - osw.flush(); - } - } - } - } else { - // N2A - try (BufferedReader in = getN2AInput(inputFileName); - BufferedWriter out = getN2AOutput(outputFileName);) { - String inLine; - while ((inLine = in.readLine()) != null) { - out.write(inLine.toCharArray()); - out.write(lineBreak); - if (outputFileName == null) { // flush stdout - out.flush(); - } - } - } - } - - // Since we are done rename temporary file to desired output file - if (createOutputFile) { - if (outputFile.exists()) { - // Some win32 platforms can't handle atomic - // rename if source and target file paths are - // identical. To make things simple we just unconditionally - // delete the target file before calling renameTo() - outputFile.delete(); - } - tempFile.renameTo(outputFile); - } - } catch (Exception e) { - error(e.toString()); - return false; - } - - return true; - } - - private void error(String msg){ - System.out.println(msg); - } - - private void usage(){ - System.out.println(getMsg("usage")); - } - - - private BufferedReader getN2AInput(String inFile) throws Exception { - - InputStream forwardIn; - if (inFile == null) - forwardIn = System.in; - else { - File f = new File(inFile); - if (!f.canRead()){ - throw new Exception(formatMsg("err.cannot.read", f.getName())); - } - - try { - forwardIn = new FileInputStream(inFile); - } catch (IOException e) { - throw new Exception(formatMsg("err.cannot.read", f.getName())); - } - } - - BufferedReader r = (encodingString != null) ? - new BufferedReader(new InputStreamReader(forwardIn, - encodingString)) : - new BufferedReader(new InputStreamReader(forwardIn)); - return r; - } - - - private BufferedWriter getN2AOutput(String outFile) throws Exception { - Writer output; - BufferedWriter n2aOut; - - if (outFile == null) - output = new OutputStreamWriter(System.out,"US-ASCII"); - - else { - File f = new File(outFile); - - File tempDir = f.getParentFile(); - - if (tempDir == null) - tempDir = new File(System.getProperty("user.dir")); - - tempFile = File.createTempFile("_N2A", - ".TMP", - tempDir); - tempFile.deleteOnExit(); - - try { - output = new FileWriter(tempFile); - } catch (IOException e){ - throw new Exception(formatMsg("err.cannot.write", tempFile.getName())); - } - } - - n2aOut = new BufferedWriter(new N2AFilter(output)); - return n2aOut; - } - - private BufferedReader getA2NInput(String inFile) throws Exception { - Reader in; - BufferedReader reader; - - if (inFile == null) - in = new InputStreamReader(System.in, "US-ASCII"); - else { - File f = new File(inFile); - if (!f.canRead()){ - throw new Exception(formatMsg("err.cannot.read", f.getName())); - } - - try { - in = new FileReader(inFile); - } catch (Exception e) { - throw new Exception(formatMsg("err.cannot.read", f.getName())); - } - } - - reader = new BufferedReader(new A2NFilter(in)); - return reader; - } - - private Writer getA2NOutput(String outFile) throws Exception { - - OutputStreamWriter w = null; - OutputStream output = null; - - if (outFile == null) - output = System.out; - else { - File f = new File(outFile); - - File tempDir = f.getParentFile(); - if (tempDir == null) - tempDir = new File(System.getProperty("user.dir")); - tempFile = File.createTempFile("_N2A", - ".TMP", - tempDir); - tempFile.deleteOnExit(); - - try { - output = new FileOutputStream(tempFile); - } catch (IOException e){ - throw new Exception(formatMsg("err.cannot.write", tempFile.getName())); - } - } - - w = (encodingString != null) ? - new OutputStreamWriter(output, encodingString) : - new OutputStreamWriter(output); - - return (w); - } - - private static Charset lookupCharset(String csName) { - if (Charset.isSupported(csName)) { - try { - return Charset.forName(csName); - } catch (UnsupportedCharsetException x) { - throw new Error(x); - } - } - return null; - } - - public static boolean canConvert(char ch) { - return (encoder != null && encoder.canEncode(ch)); - } - - private static void initializeConverter() throws UnsupportedEncodingException { - Charset cs = null; - - try { - cs = (encodingString == null) ? - lookupCharset(defaultEncoding): - lookupCharset(encodingString); - - encoder = (cs != null) ? - cs.newEncoder() : - null; - } catch (IllegalCharsetNameException e) { - throw new Error(e); - } - } - - private static ResourceBundle rsrc; - - static { - try { - rsrc = ResourceBundle.getBundle( - "sun.tools.native2ascii.resources.MsgNative2ascii"); - } catch (MissingResourceException e) { - throw new Error("Missing message file."); - } - } - - private String getMsg(String key) { - try { - return (rsrc.getString(key)); - } catch (MissingResourceException e) { - throw new Error("Error in message file format."); - } - } - - private String formatMsg(String key, String arg) { - String msg = getMsg(key); - return MessageFormat.format(msg, arg); - } - - - /** - * Main program - */ - public static void main(String argv[]){ - Main converter = new Main(); - System.exit(converter.convert(argv) ? 0 : 1); - } -} diff --git a/jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/N2AFilter.java b/jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/N2AFilter.java deleted file mode 100644 index c1b7efb319e..00000000000 --- a/jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/N2AFilter.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2001, 2008, 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. - */ - - -/** - * This FilterWriter class takes an existing Writer and uses - * the 'back-tick U' escape notation to escape characters which are - * encountered within the input character based stream which - * are outside the 7-bit ASCII range. The native platforms linefeed - * character is emitted for each line of processed input - */ - -package sun.tools.native2ascii; -import java.io.*; -import java.nio.BufferOverflowException; - -class N2AFilter extends FilterWriter { - - public N2AFilter(Writer out) { super(out); } - - public void write(char b) throws IOException { - char[] buf = new char[1]; - buf[0] = b; - write(buf, 0, 1); - } - - public void write(char[] buf, int off, int len) throws IOException { - - String lineBreak = System.getProperty("line.separator"); - - //System.err.println ("xx Out buffer length is " + buf.length ); - for (int i = 0; i < len; i++) { - if ((buf[i] > '\u007f')) { - // write \udddd - out.write('\\'); - out.write('u'); - String hex = - Integer.toHexString(buf[i]); - StringBuilder hex4 = new StringBuilder(hex); - hex4.reverse(); - int length = 4 - hex4.length(); - for (int j = 0; j < length; j++) { - hex4.append('0'); - } - for (int j = 0; j < 4; j++) { - out.write(hex4.charAt(3 - j)); - } - } else - out.write(buf[i]); - } - } -} diff --git a/jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii.java b/jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii.java deleted file mode 100644 index 55b22bcc67a..00000000000 --- a/jdk/src/jdk.dev/share/classes/sun/tools/native2ascii/resources/MsgNative2ascii.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package sun.tools.native2ascii.resources; - -import java.util.ListResourceBundle; - -public class MsgNative2ascii extends ListResourceBundle { - - public Object[][] getContents() { - Object[][] temp = new Object[][] { - {"err.bad.arg", "-encoding requires argument"}, - {"err.cannot.read", "{0} could not be read."}, - {"err.cannot.write", "{0} could not be written."}, - {"usage", "Usage: native2ascii" + - " [-reverse] [-encoding encoding] [inputfile [outputfile]]"}, - }; - - return temp; - } -} diff --git a/jdk/src/jdk.rmic/share/classes/sun/tools/javac/resources/javac.properties b/jdk/src/jdk.rmic/share/classes/sun/tools/javac/resources/javac.properties index f435c6cca14..f5ce0f8deef 100644 --- a/jdk/src/jdk.rmic/share/classes/sun/tools/javac/resources/javac.properties +++ b/jdk/src/jdk.rmic/share/classes/sun/tools/javac/resources/javac.properties @@ -634,4 +634,4 @@ main.path.msg=\ [The source classpath is "{0}"]\n\ [The library classpath is "{1}"] javac.err.invalid.encoding.char=\ - The source file encoding may be different with this platform encoding. Please use -encoding option to adjust file encoding, or apply native2ascii utility to make source file ASCII encoding. + The source file encoding may be different with this platform encoding. Please use -encoding option to adjust file encoding, or make sure source file converted to ASCII encoding. diff --git a/jdk/test/TEST.groups b/jdk/test/TEST.groups index d6af5fa5799..dafec986fbd 100644 --- a/jdk/test/TEST.groups +++ b/jdk/test/TEST.groups @@ -214,14 +214,12 @@ core_tools = \ jdk/internal/jimage \ jdk/internal/jrtfs \ sun/tools/java \ - sun/tools/native2ascii \ sun/tools/jrunscript svc_tools = \ com/sun/tools/attach \ sun/tools \ -sun/tools/java \ - -sun/tools/native2ascii \ -sun/tools/jrunscript \ sun/jvmstat \ demo/jvmti diff --git a/jdk/test/sun/tools/native2ascii/A2N_4630463 b/jdk/test/sun/tools/native2ascii/A2N_4630463 deleted file mode 100644 index 846e6fac844..00000000000 --- a/jdk/test/sun/tools/native2ascii/A2N_4630463 +++ /dev/null @@ -1 +0,0 @@ -\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF diff --git a/jdk/test/sun/tools/native2ascii/A2N_4630463.expected b/jdk/test/sun/tools/native2ascii/A2N_4630463.expected deleted file mode 100644 index 6c694dc3fb9..00000000000 --- a/jdk/test/sun/tools/native2ascii/A2N_4630463.expected +++ /dev/null @@ -1 +0,0 @@ -€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ diff --git a/jdk/test/sun/tools/native2ascii/A2N_4630971 b/jdk/test/sun/tools/native2ascii/A2N_4630971 deleted file mode 100644 index 263852a641b..00000000000 --- a/jdk/test/sun/tools/native2ascii/A2N_4630971 +++ /dev/null @@ -1,4 +0,0 @@ -#input test file 4630971 for bug native2ascii -reverse -#occurence of a backslash character in last 5 chars -#of input file should not hang native2ascii -reverse -Hello world\\\\\ diff --git a/jdk/test/sun/tools/native2ascii/A2N_4701617 b/jdk/test/sun/tools/native2ascii/A2N_4701617 deleted file mode 100644 index 0ccf547c303..00000000000 --- a/jdk/test/sun/tools/native2ascii/A2N_4701617 +++ /dev/null @@ -1,11 +0,0 @@ -\uFF61\uFF62\uFF63\uFF64\uFF65\uFF66 -\uFF67\uFF68\uFF69\uFF6A\uFF6B\uFF6C -\uFF6D\uFF6E\uFF6F\uFF70\uFF71\uFF72 -\uFF73\uFF74\uFF75\uFF76\uFF77\uFF78 -\uFF79\uFF7A\uFF7B\uFF7C\uFF7D\uFF7E -\uFF7F\uFF80\uFF81\uFF82\uFF83\uFF84 -\uFF85\uFF86\uFF87\uFF88\uFF89\uFF8A -\uFF8B\uFF8C\uFF8D\uFF8E\uFF8F\uFF90 -\uFF91\uFF92\uFF93\uFF94\uFF95\uFF96 -\uFF97\uFF98\uFF99\uFF9A\uFF9B\uFF9C -\uFF9D\uFF9E\uFF9F diff --git a/jdk/test/sun/tools/native2ascii/A2N_4701617.expected b/jdk/test/sun/tools/native2ascii/A2N_4701617.expected deleted file mode 100644 index 741d22ad860..00000000000 --- a/jdk/test/sun/tools/native2ascii/A2N_4701617.expected +++ /dev/null @@ -1,11 +0,0 @@ -¡¢£¤¥¦ -§¨©ª«¬ -­®¯°±² -³´µ¶·¸ -¹º»¼½¾ -¿ÀÁÂÃÄ -ÅÆÇÈÉÊ -ËÌÍÎÏÐ -ÑÒÓÔÕÖ -×ØÙÚÛÜ -ÝÞß diff --git a/jdk/test/sun/tools/native2ascii/A2N_6247817 b/jdk/test/sun/tools/native2ascii/A2N_6247817 deleted file mode 100644 index ea566cb3a9b..00000000000 --- a/jdk/test/sun/tools/native2ascii/A2N_6247817 +++ /dev/null @@ -1 +0,0 @@ -\user diff --git a/jdk/test/sun/tools/native2ascii/N2A_4636448 b/jdk/test/sun/tools/native2ascii/N2A_4636448 deleted file mode 100644 index 6c694dc3fb9..00000000000 --- a/jdk/test/sun/tools/native2ascii/N2A_4636448 +++ /dev/null @@ -1 +0,0 @@ -€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ diff --git a/jdk/test/sun/tools/native2ascii/N2A_4636448.expected b/jdk/test/sun/tools/native2ascii/N2A_4636448.expected deleted file mode 100644 index e2bcea3a295..00000000000 --- a/jdk/test/sun/tools/native2ascii/N2A_4636448.expected +++ /dev/null @@ -1 +0,0 @@ -\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008a\u008b\u008c\u008d\u008e\u008f\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009a\u009b\u009c\u009d\u009e\u009f\u00a0\u00a1\u00a2\u00a3\u00a4\u00a5\u00a6\u00a7\u00a8\u00a9\u00aa\u00ab\u00ac\u00ad\u00ae\u00af\u00b0\u00b1\u00b2\u00b3\u00b4\u00b5\u00b6\u00b7\u00b8\u00b9\u00ba\u00bb\u00bc\u00bd\u00be\u00bf\u00c0\u00c1\u00c2\u00c3\u00c4\u00c5\u00c6\u00c7\u00c8\u00c9\u00ca\u00cb\u00cc\u00cd\u00ce\u00cf\u00d0\u00d1\u00d2\u00d3\u00d4\u00d5\u00d6\u00d7\u00d8\u00d9\u00da\u00db\u00dc\u00dd\u00de\u00df\u00e0\u00e1\u00e2\u00e3\u00e4\u00e5\u00e6\u00e7\u00e8\u00e9\u00ea\u00eb\u00ec\u00ed\u00ee\u00ef\u00f0\u00f1\u00f2\u00f3\u00f4\u00f5\u00f6\u00f7\u00f8\u00f9\u00fa\u00fb\u00fc\u00fd\u00fe\u00ff diff --git a/jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh b/jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh deleted file mode 100644 index 5c886c2100d..00000000000 --- a/jdk/test/sun/tools/native2ascii/Native2AsciiTests.sh +++ /dev/null @@ -1,129 +0,0 @@ -#! /bin/sh -e - -# -# Copyright (c) 2002, 2011, 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 4630463 4630971 4636448 4701617 4721296 4710890 6247817 7021987 8067964 -# @summary Tests miscellaneous native2ascii bugfixes and regressions - - -if [ "${TESTSRC}" = "" ]; then TESTSRC=.; fi -if [ "${TESTJAVA}" = "" ]; then TESTJAVA=$1; shift; fi - -case `uname -s` in - Windows* | CYGWIN*) OS=Windows;; - SunOS|Linux) OS=Unix;; -esac - -N2A=$TESTJAVA/bin/native2ascii - -check() { - bug=$1; shift - expected=$1; shift - out=$1; shift - - # Strip carriage returns from output when comparing with n2a test output - # on win32 systems - if [ ${OS} = Windows ]; then - sed -e 's@\\r@@g' $out >$out.1 - sed -e 's@\\r@@g' $expected >$out.expected - else - cp $out $out.1 - cp $expected $out.expected - fi - if (set -x; diff -c $out.expected $out.1); then - echo "$bug passed" - else - echo "$bug failed" - exit 1 - fi -} - -# Check that native2ascii -reverse with an ISO-8859-1 encoded file works -# as documented. 4630463 fixes a bug in the ISO-8859-1 encoder which -# prevented encoding of valid ISO-8859-1 chars > 0x7f - -rm -f x.* -$N2A -reverse -encoding ISO-8859-1 $TESTSRC/A2N_4630463 x.out -check 4630463 $TESTSRC/A2N_4630463.expected x.out - -# Take file encoded in ISO-8859-1 with range of chars , 0x7f < c < 0xff -# invoke native2ascii with input filename and output filename identical -# Ensure that output file is as expected by comparing to expected output. -# 4636448 Fixed bug whereby output file was clobbered if infile and outfile -# referred to same filename. This bug only applies to Solaris/Linux, since on -# Windows you can't write to a file that's open for reading. - -if [ $OS = Unix ]; then - rm -f x.* - cp $TESTSRC/N2A_4636448 x.in - chmod +w x.in - ls -l x.in - if $N2A -encoding ISO-8859-1 x.in x.in; then - check 4636448 $TESTSRC/N2A_4636448.expected x.in - fi -fi - -# Ensure that files containing backslashes adjacent to EOF don't -# hang native2ascii -reverse - -rm -f x.* -$N2A -reverse -encoding ISO-8859-1 $TESTSRC/A2N_4630971 x.out -check 4630971 $TESTSRC/A2N_4630971 x.out - -# Check reverse (char -> native) encoding of Japanese Halfwidth -# Katakana characters for MS932 (default WinNT Japanese encoding) -# Regression test for bugID 4701617 - -rm -f x.* -$N2A -reverse -encoding MS932 $TESTSRC/A2N_4701617 x.out -check 4701617 $TESTSRC/A2N_4701617.expected x.out - -# Check that the inputfile appears in the error message when not found - -badin="DoesNotExist" -$N2A $badin x.out | grep "$badin" > /dev/null -if [ $? != 0 ]; then - echo "\"$badin\" expected to appear in error message" - exit 1 -fi - -# for win32 only ensure when output file pre-exists that -# native2ascii tool will simply overwrite with the expected -# output file (fixed bugID 4710890) - -if [ OS = Windows ]; then - rm -f x.* - cp $TESTSRC/test3 x.in - chmod a+x x.in - ls -l x.in - touch x.out - $N2A -encoding ISO-8859-1 x.in x.out - check 4710890 $TESTSRC/test3 x.out -fi - -rm -rf x.* -$N2A -reverse $TESTSRC/A2N_6247817 x.out -check 4701617 $TESTSRC/A2N_6247817 x.out - diff --git a/jdk/test/sun/tools/native2ascii/NativeErrors.java b/jdk/test/sun/tools/native2ascii/NativeErrors.java deleted file mode 100644 index 81b1920b36a..00000000000 --- a/jdk/test/sun/tools/native2ascii/NativeErrors.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 1998, 1999, 2014 Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * 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 4136352 - * @library /lib/testlibrary - * @summary Test Native2ASCII error messages - * - */ - -import java.io.File; -import java.util.ResourceBundle; -import java.util.MissingResourceException; -import jdk.testlibrary.OutputAnalyzer; -import jdk.testlibrary.JDKToolLauncher; -import jdk.testlibrary.ProcessTools; - -public class NativeErrors { - - private static ResourceBundle rsrc; - - static { - try { - rsrc = ResourceBundle.getBundle( - "sun.tools.native2ascii.resources.MsgNative2ascii"); - } catch (MissingResourceException e) { - throw new Error("Missing message file."); - } - } - - public static void main(String args[]) throws Throwable { - // Execute command in another vm. Verify stdout for expected err msg. - - // Test with no input file given. - checkResult(executeCmd("-encoding"), "err.bad.arg"); - - File f0 = new File(System.getProperty("test.src", "."), "test123"); - String path0 = f0.getPath(); - if ( f0.exists() ) { - throw new Error("Input file should not exist: " + path0); - } - checkResult(executeCmd(path0), "err.cannot.read"); - - File f1 = new File(System.getProperty("test.src", "."), "test1"); - File f2 = File.createTempFile("test2", ".tmp"); - String path1 = f1.getPath(); - String path2 = f2.getPath(); - if ( !f1.exists() ) { - throw new Error("Missing input file: " + path1); - } - if ( !f2.setWritable(false) ) { - throw new Error("Output file cannot be made read only: " + path2); - } - f2.deleteOnExit(); - if ( f2.canWrite() ) { - String msg = "Output file is still writable. " + - "Probably because test is run as root. Read-only test skipped."; - System.out.println(msg); - } else { - // Test write to a read-only file. - checkResult(executeCmd(path1, path2), "err.cannot.write"); - } - } - - private static String executeCmd(String... toolArgs) throws Throwable { - JDKToolLauncher cmd = JDKToolLauncher.createUsingTestJDK("native2ascii"); - for (String s : toolArgs) { - cmd.addToolArg(s); - } - OutputAnalyzer output = ProcessTools.executeProcess(cmd.getCommand()); - if (output == null || output.getStdout() == null) { - throw new Exception("Output was null. Process did not finish correctly."); - } - if (output.getExitValue() == 0) { - throw new Exception("Process exit code was 0, but error was expected."); - } - return output.getStdout(); - } - - private static void checkResult( - String errorReceived, String errorKey) throws Exception { - String errorExpected = rsrc.getString(errorKey); - if (errorExpected == null) { - throw new Exception("No error message for key: " + errorKey); - } - // Remove template tag from error message. - errorExpected = errorExpected.replaceAll("\\{0\\}", ""); - - System.out.println("received: " + errorReceived); - System.out.println("expected: " + errorExpected); - if (errorReceived.indexOf(errorExpected) < 0) { - throw new RuntimeException("Native2ascii bad arg error broken."); - } - } - -} diff --git a/jdk/test/sun/tools/native2ascii/Permission.java b/jdk/test/sun/tools/native2ascii/Permission.java deleted file mode 100644 index 53718d21fd7..00000000000 --- a/jdk/test/sun/tools/native2ascii/Permission.java +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2012, 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 7177216 - * @summary resulting file of native2ascii should have normal permission - */ - -import java.io.*; -import java.nio.file.*; -import java.nio.file.attribute.*; -import sun.tools.native2ascii.Main; - -public class Permission { - - private static void cleanup(String... fnames) throws Throwable { - for (String fname : fnames) { - Files.deleteIfExists(Paths.get(fname)); - } - } - - public static void realMain(String[] args) throws Throwable { - if (!System.getProperty("os.name").startsWith("Windows")) { - String src = "native2ascii_permtest_src"; - String dst = "native2ascii_permtest_dst"; - - cleanup(src, dst); - try { - try (FileOutputStream fos = new FileOutputStream(src)) { - fos.write('a'); fos.write('b'); fos.write('c'); - } - String[] n2aArgs = new String[] {"-encoding", "utf8", src, dst}; - if (!new Main().convert(n2aArgs)) { - fail("n2a failed."); - } - equal(Files.getPosixFilePermissions(Paths.get(src)), - Files.getPosixFilePermissions(Paths.get(dst))); - String[] a2nArgs = new String[] {"-reverse", "-encoding", "utf8", dst, src}; - if (!new Main().convert(a2nArgs)) { - fail("a2n failed."); - } - equal(Files.getPosixFilePermissions(Paths.get(src)), - Files.getPosixFilePermissions(Paths.get(dst))); - } finally { - cleanup(src, dst); - } - } - } - - //--------------------- Infrastructure --------------------------- - static volatile int passed = 0, failed = 0; - static void pass() {passed++;} - static void fail() {failed++; Thread.dumpStack();} - static void fail(String msg) {System.out.println(msg); fail();} - static void unexpected(Throwable t) {failed++; t.printStackTrace();} - static void check(boolean cond) {if (cond) pass(); else fail();} - static void equal(Object x, Object y) { - if (x == null ? y == null : x.equals(y)) pass(); - else fail(x + " not equal to " + y);} - public static void main(String[] args) throws Throwable { - try {realMain(args);} catch (Throwable t) {unexpected(t);} - System.out.println("\nPassed = " + passed + " failed = " + failed); - if (failed > 0) throw new AssertionError("Some tests failed");} -} diff --git a/jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.java b/jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.java deleted file mode 100644 index 2a00ab813f4..00000000000 --- a/jdk/test/sun/tools/native2ascii/resources/ImmutableResourceTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2005, 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 6287579 - * @summary SubClasses of ListResourceBundle should fix getContents() - * @run main ImmutableResourceTest - * - * @author Tim Bell - * - */ -import java.util.ResourceBundle; - -public class ImmutableResourceTest { - - public static void main(String[] args) throws Exception { - /* Reach under the covers and get the message strings */ - sun.tools.native2ascii.resources.MsgNative2ascii msgs = - new sun.tools.native2ascii.resources.MsgNative2ascii (); - Object [][] testData = msgs.getContents(); - - /* Shred our copy of the message strings */ - for (int ii = 0; ii < testData.length; ii++) { - testData[ii][0] = "T6287579"; - testData[ii][1] = "yyy"; - } - - /* - * Try to lookup the shredded key. - * If this is successful we have a problem. - */ - String ss = null; - try { - ss = msgs.getString("T6287579"); - } catch (java.util.MissingResourceException mre) { - /* - * Ignore the expected MissingResourceException since key - * "T6287579" is not in the canonical MsgNative2ascii. - */ - } - if ("yyy".equals(ss)) { - throw new Exception ("SubClasses of ListResourceBundle should fix getContents()"); - } - System.out.println("...Finished."); - } -} diff --git a/jdk/test/sun/tools/native2ascii/test1 b/jdk/test/sun/tools/native2ascii/test1 deleted file mode 100644 index 35f7ab26c98..00000000000 --- a/jdk/test/sun/tools/native2ascii/test1 +++ /dev/null @@ -1 +0,0 @@ -This file exists as a readable placeholder for NativeErrors.java. diff --git a/jdk/test/sun/tools/native2ascii/test3 b/jdk/test/sun/tools/native2ascii/test3 deleted file mode 100644 index b816ce24a64..00000000000 --- a/jdk/test/sun/tools/native2ascii/test3 +++ /dev/null @@ -1 +0,0 @@ -This file exists as a non-writable placeholder for Native2AsciiTests diff --git a/jdk/test/tools/launcher/VersionCheck.java b/jdk/test/tools/launcher/VersionCheck.java index d7044446588..687917177e3 100644 --- a/jdk/test/tools/launcher/VersionCheck.java +++ b/jdk/test/tools/launcher/VersionCheck.java @@ -93,7 +93,6 @@ public class VersionCheck extends TestHelper { "kinit", "klist", "ktab", - "native2ascii", "orbd", "pack200", "packager", From af164e79264970fd662aa9519724994d39252dec Mon Sep 17 00:00:00 2001 From: Sean Mullan Date: Sun, 24 May 2015 08:54:38 -0400 Subject: [PATCH 13/36] 8065233: Remove Policy provider code that synchronizes on identityPolicyEntries List Reviewed-by: weijun --- .../sun/security/provider/PolicyFile.java | 49 +------------------ .../share/conf/security/java.security | 3 +- 2 files changed, 4 insertions(+), 48 deletions(-) diff --git a/jdk/src/java.base/share/classes/sun/security/provider/PolicyFile.java b/jdk/src/java.base/share/classes/sun/security/provider/PolicyFile.java index 9b1de6805f9..33605436f82 100644 --- a/jdk/src/java.base/share/classes/sun/security/provider/PolicyFile.java +++ b/jdk/src/java.base/share/classes/sun/security/provider/PolicyFile.java @@ -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 @@ -278,7 +278,6 @@ public class PolicyFile extends java.security.Policy { private boolean constructed = false; private boolean expandProperties = true; - private boolean ignoreIdentityScope = true; private boolean allowSystemProperties = true; private boolean notUtf8 = false; private URL url; @@ -415,8 +414,6 @@ public class PolicyFile extends java.security.Policy { public String run() { expandProperties = "true".equalsIgnoreCase (Security.getProperty("policy.expandProperties")); - ignoreIdentityScope = "true".equalsIgnoreCase - (Security.getProperty("policy.ignoreIdentityScope")); allowSystemProperties = "true".equalsIgnoreCase (Security.getProperty("policy.allowSystemProperty")); notUtf8 = "false".equalsIgnoreCase @@ -1206,31 +1203,6 @@ public class PolicyFile extends java.security.Policy { addPermissions(perms, cs, principals, entry); } - // Go through policyEntries gotten from identity db; sync required - // because checkForTrustedIdentity (below) might update list - synchronized (pi.identityPolicyEntries) { - for (PolicyEntry entry : pi.identityPolicyEntries) { - addPermissions(perms, cs, principals, entry); - } - } - - // now see if any of the keys are trusted ids. - if (!ignoreIdentityScope) { - Certificate certs[] = cs.getCertificates(); - if (certs != null) { - for (int k=0; k < certs.length; k++) { - Object idMap = pi.aliasMapping.get(certs[k]); - if (idMap == null && - checkForTrustedIdentity(certs[k], pi)) { - // checkForTrustedIdentity added it - // to the policy for us. next time - // around we'll find it. This time - // around we need to add it. - perms.add(SecurityConstants.ALL_PERMISSION); - } - } - } - } return perms; } @@ -1620,7 +1592,7 @@ public class PolicyFile extends java.security.Policy { * associated with the given code source. * * The signer certificates are those certificates that were used - * to verifysigned code originating from the codesource location. + * to verify signed code originating from the codesource location. * * This method assumes that in the given code source, each signer * certificate is followed by its supporting certificate chain @@ -1916,17 +1888,6 @@ public class PolicyFile extends java.security.Policy { } } - /** - * Checks public key. If it is marked as trusted in - * the identity database, add it to the policy - * with the AllPermission. - */ - private boolean checkForTrustedIdentity(final Certificate cert, - PolicyInfo myInfo) - { - return false; - } - /** * Each entry in the policy configuration file is represented by a * PolicyEntry object.

    @@ -2282,10 +2243,6 @@ public class PolicyFile extends java.security.Policy { // Stores grant entries in the policy final List policyEntries; - // Stores grant entries gotten from identity database - // Use separate lists to avoid sync on policyEntries - final List identityPolicyEntries; - // Maps aliases to certs final Map aliasMapping; @@ -2295,8 +2252,6 @@ public class PolicyFile extends java.security.Policy { PolicyInfo(int numCaches) { policyEntries = new ArrayList<>(); - identityPolicyEntries = - Collections.synchronizedList(new ArrayList(2)); aliasMapping = Collections.synchronizedMap(new HashMap<>(11)); pdMapping = new ProtectionDomainCache[numCaches]; diff --git a/jdk/src/java.base/share/conf/security/java.security b/jdk/src/java.base/share/conf/security/java.security index be33f832a36..0f1fe1f5e27 100644 --- a/jdk/src/java.base/share/conf/security/java.security +++ b/jdk/src/java.base/share/conf/security/java.security @@ -179,7 +179,8 @@ policy.allowSystemProperty=true # whether or not we look into the IdentityScope for trusted Identities # when encountering a 1.1 signed JAR file. If the identity is found -# and is trusted, we grant it AllPermission. +# and is trusted, we grant it AllPermission. Note: the default policy +# provider (sun.security.provider.PolicyFile) does not support this property. policy.ignoreIdentityScope=false # From 6b7bbd4884767e23093635b3c165737e7a89ec91 Mon Sep 17 00:00:00 2001 From: Artem Smotrakov Date: Mon, 25 May 2015 11:47:41 +0300 Subject: [PATCH 14/36] 8050374: More Signature tests Reviewed-by: valeriep --- jdk/test/java/security/Signature/Offsets.java | 251 ++++++++++++++++++ .../java/security/SignedObject/Chain.java | 216 +++++++++++++++ jdk/test/java/security/SignedObject/Copy.java | 123 +++++++++ .../sun/security/ec/SignatureOffsets.java | 52 ++++ .../sun/security/ec/SignedObjectChain.java | 57 ++++ .../sun/security/mscapi/SignatureOffsets.java | 53 ++++ .../security/mscapi/SignedObjectChain.java | 58 ++++ .../sun/security/rsa/SignatureOffsets.java | 53 ++++ .../sun/security/rsa/SignedObjectChain.java | 59 ++++ .../security/ssl/rsa/SignatureOffsets.java | 50 ++++ .../security/ssl/rsa/SignedObjectChain.java | 56 ++++ 11 files changed, 1028 insertions(+) create mode 100644 jdk/test/java/security/Signature/Offsets.java create mode 100644 jdk/test/java/security/SignedObject/Chain.java create mode 100644 jdk/test/java/security/SignedObject/Copy.java create mode 100644 jdk/test/sun/security/ec/SignatureOffsets.java create mode 100644 jdk/test/sun/security/ec/SignedObjectChain.java create mode 100644 jdk/test/sun/security/mscapi/SignatureOffsets.java create mode 100644 jdk/test/sun/security/mscapi/SignedObjectChain.java create mode 100644 jdk/test/sun/security/rsa/SignatureOffsets.java create mode 100644 jdk/test/sun/security/rsa/SignedObjectChain.java create mode 100644 jdk/test/sun/security/ssl/rsa/SignatureOffsets.java create mode 100644 jdk/test/sun/security/ssl/rsa/SignedObjectChain.java diff --git a/jdk/test/java/security/Signature/Offsets.java b/jdk/test/java/security/Signature/Offsets.java new file mode 100644 index 00000000000..9e71690ea4f --- /dev/null +++ b/jdk/test/java/security/Signature/Offsets.java @@ -0,0 +1,251 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.security.InvalidKeyException; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.NoSuchAlgorithmException; +import java.security.NoSuchProviderException; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.security.Signature; +import java.security.SignatureException; +import jdk.testlibrary.RandomFactory; + +/* + * @test + * @bug 8050374 + * @key randomness + * @summary This test validates signature verification + * Signature.verify(byte[], int, int). The test uses RandomFactory to + * get random set of clear text data to sign. After the signature + * generation, the test tries to verify signature with the above API + * and passing in different signature offset (0, 33, 66, 99). + * @library /lib/testlibrary + * @run main Offsets SUN NONEwithDSA + * @run main Offsets SUN SHA1withDSA + * @run main Offsets SUN SHA224withDSA + * @run main Offsets SUN SHA256withDSA + */ +public class Offsets { + + private final int size; + private final byte[] cleartext; + private final PublicKey pubkey; + private final Signature signature; + private final byte[] signed; + + private Offsets(Signature signature, PublicKey pubkey, PrivateKey privkey, + int size, byte[] cleartext) throws InvalidKeyException, + SignatureException { + this.pubkey = pubkey; + this.signature = signature; + this.size = size; + this.cleartext = cleartext; + + signature.initSign(privkey); + signature.update(cleartext, 0, size); + signed = signature.sign(); + } + + int getDataSize() { + return size; + } + + int getSignatureLength() { + return signed.length; + } + + byte[] shiftSignData(int offset) { + byte[] testSignData = new byte[offset + signed.length]; + System.arraycopy(signed, 0, testSignData, offset, + signed.length); + return testSignData; + } + + boolean verifySignature(byte[] sigData, int sigOffset, int sigLength, + int updateOffset, int updateLength) + throws InvalidKeyException, SignatureException { + signature.initVerify(pubkey); + signature.update(cleartext, updateOffset, updateLength); + return signature.verify(sigData, sigOffset, sigLength); + } + + static Offsets init(String provider, String algorithm) + throws NoSuchAlgorithmException, NoSuchProviderException, + InvalidKeyException, SignatureException { + // fill the cleartext data with random bytes + byte[] cleartext = new byte[100]; + RandomFactory.getRandom().nextBytes(cleartext); + + // NONEwith requires input to be of 20 bytes + int size = algorithm.contains("NONEwith") ? 20 : 100; + + // create signature instance + Signature signature = Signature.getInstance(algorithm, provider); + + String keyAlgo; + if (algorithm.contains("RSA")) { + keyAlgo = "RSA"; + } else if (algorithm.contains("ECDSA")) { + keyAlgo = "EC"; + } else if (algorithm.contains("DSA")) { + keyAlgo = "DSA"; + } else { + throw new RuntimeException("Test doesn't support this signature " + + "algorithm: " + algorithm); + } + + KeyPairGenerator kpg = KeyPairGenerator.getInstance(keyAlgo, provider); + KeyPair kp = kpg.generateKeyPair(); + PublicKey pubkey = kp.getPublic(); + PrivateKey privkey = kp.getPrivate(); + + return new Offsets(signature, pubkey, privkey, size, cleartext); + } + + public static void main(String[] args) throws NoSuchAlgorithmException, + InvalidKeyException, SignatureException { + if (args.length < 2) { + throw new RuntimeException("Wrong parameters"); + } + + boolean result = true; + try { + Offsets test = init(args[0], args[1]); + + // We are trying 3 different offsets, data size has nothing to do + // with signature length + for (int chunk = 3; chunk > 0; chunk--) { + int signOffset = test.getDataSize() / chunk; + + System.out.println("Running test with offset " + signOffset); + byte[] signData = test.shiftSignData(signOffset); + + boolean success = test.verifySignature(signData, signOffset, + test.getSignatureLength(), 0, test.getDataSize()); + + if (success) { + System.out.println("Successfully verified with offset " + + signOffset); + } else { + System.out.println("Verification failed with offset " + + signOffset); + result = false; + } + } + + // save signature to offset 0 + byte[] signData = test.shiftSignData(0); + + // Negative tests + + // Test signature offset 0. + // Wrong test data will be passed to update, + // so signature verification should fail. + for (int chunk = 3; chunk > 0; chunk--) { + int dataOffset = (test.getDataSize() - 1) / chunk; + boolean success; + try { + success = test.verifySignature(signData, 0, + test.getSignatureLength(), dataOffset, + (test.getDataSize() - dataOffset)); + } catch (SignatureException e) { + // Since we are trying different data size, it can throw + // SignatureException + success = false; + } + + if (!success) { + System.out.println("Signature verification failed " + + "as expected, with data offset " + dataOffset + + " and length " + + (test.getDataSize() - dataOffset)); + } else { + System.out.println("Signature verification " + + "should not succeed, with data offset " + + dataOffset + " and length " + + (test.getDataSize() - dataOffset)); + result = false; + } + } + + // Tests with manipulating offset and length + result &= Offsets.checkFailure(test, signData, -1, + test.getSignatureLength()); + + result &= Offsets.checkFailure(test, signData, 0, + test.getSignatureLength() - 1); + + result &= Offsets.checkFailure(test, signData, + test.getSignatureLength() + 1, test.getSignatureLength()); + + result &= Offsets.checkFailure(test, signData, 0, + test.getSignatureLength() + 1); + + result &= Offsets.checkFailure(test, signData, 0, 0); + + result &= Offsets.checkFailure(test, signData, 0, -1); + + result &= Offsets.checkFailure(test, signData, + 2147483646, test.getSignatureLength()); + + result &= Offsets.checkFailure(test, null, 0, + test.getSignatureLength()); + } catch (NoSuchProviderException nspe) { + System.out.println("No such provider: " + nspe); + } + + if (!result) { + throw new RuntimeException("Some test cases failed"); + } + } + + static boolean checkFailure(Offsets test, byte[] signData, int offset, + int length) { + boolean success; + try { + success = test.verifySignature(signData, offset, length, 0, + test.getDataSize()); + } catch (IllegalArgumentException | SignatureException e) { + System.out.println("Expected exception: " + e); + success = false; + } catch (InvalidKeyException e) { + System.out.println("Unexpected exception: " + e); + return false; + } + + if (!success) { + System.out.println("Signature verification failed as expected, " + + "with signature offset " + offset + " and length " + + length); + return true; + } else { + System.out.println("Signature verification should not succeed, " + + "with signature offset " + offset + " and length " + + length); + return false; + } + } + +} diff --git a/jdk/test/java/security/SignedObject/Chain.java b/jdk/test/java/security/SignedObject/Chain.java new file mode 100644 index 00000000000..e6c423cbb02 --- /dev/null +++ b/jdk/test/java/security/SignedObject/Chain.java @@ -0,0 +1,216 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.security.Signature; +import java.security.SignedObject; +import java.security.KeyPairGenerator; +import java.security.KeyPair; +import java.security.NoSuchProviderException; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.util.Arrays; + +/* + * @test + * @bug 8050374 + * @summary Verify a chain of signed objects + */ +public class Chain { + + static enum KeyAlg { + RSA("RSA"), + DSA("DSA"), + EC("EC"); + + final String name; + + KeyAlg(String alg) { + this.name = alg; + } + } + + static enum Provider { + Default("default"), + SunRsaSign("SunRsaSign"), + Sun("SUN"), + SunEC("SunEC"), + SunJSSE("SunJSSE"), + SunMSCAPI("SunMSCAPI"); + + final String name; + + Provider(String name) { + this.name = name; + } + } + + static enum SigAlg { + MD2withRSA("MD2withRSA"), + MD5withRSA("md5withRSA"), + + SHA1withDSA("SHA1withDSA"), + SHA224withDSA("SHA224withDSA"), + SHA256withDSA("SHA256withDSA"), + + SHA1withRSA("Sha1withrSA"), + SHA224withRSA("SHA224withRSA"), + SHA256withRSA("SHA256withRSA"), + SHA384withRSA("SHA384withRSA"), + SHA512withRSA("SHA512withRSA"), + + SHA1withECDSA("SHA1withECDSA"), + SHA256withECDSA("SHA256withECDSA"), + SHA224withECDSA("SHA224withECDSA"), + SHA384withECDSA("SHA384withECDSA"), + SHA512withECDSA("SHA512withECDSA"), + + MD5andSHA1withRSA("MD5andSHA1withRSA"); + + final String name; + + SigAlg(String name) { + this.name = name; + } + } + + static class Test { + final Provider provider; + final KeyAlg keyAlg; + final SigAlg sigAlg; + + Test(SigAlg sigAlg, KeyAlg keyAlg, Provider privider) { + this.provider = privider; + this.keyAlg = keyAlg; + this.sigAlg = sigAlg; + } + } + + private static final Test[] tests = { + new Test(SigAlg.SHA1withDSA, KeyAlg.DSA, Provider.Default), + new Test(SigAlg.MD2withRSA, KeyAlg.RSA, Provider.Default), + new Test(SigAlg.MD5withRSA, KeyAlg.RSA, Provider.Default), + new Test(SigAlg.SHA1withRSA, KeyAlg.RSA, Provider.Default), + new Test(SigAlg.SHA1withDSA, KeyAlg.DSA, Provider.Sun), + new Test(SigAlg.SHA224withDSA, KeyAlg.DSA, Provider.Sun), + new Test(SigAlg.SHA256withDSA, KeyAlg.DSA, Provider.Sun), + }; + + private static final String str = "to-be-signed"; + private static final int N = 3; + + public static void main(String argv[]) { + boolean result = Arrays.stream(tests).allMatch((test) -> runTest(test)); + if(result) { + System.out.println("All tests passed"); + } else { + throw new RuntimeException("Some tests failed"); + } + } + + static boolean runTest(Test test) { + System.out.format("Test: provider = %s, signature algorithm = %s, " + + "key algorithm = %s\n", + test.provider, test.sigAlg, test.keyAlg); + try { + // Generate all private/public key pairs + PrivateKey[] privKeys = new PrivateKey[N]; + PublicKey[] pubKeys = new PublicKey[N]; + PublicKey[] anotherPubKeys = new PublicKey[N]; + KeyPairGenerator kpg = KeyPairGenerator.getInstance( + test.keyAlg.name); + for (int j=0; j < N; j++) { + KeyPair kp = kpg.genKeyPair(); + KeyPair anotherKp = kpg.genKeyPair(); + privKeys[j] = kp.getPrivate(); + pubKeys[j] = kp.getPublic(); + anotherPubKeys[j] = anotherKp.getPublic(); + + if (Arrays.equals(pubKeys[j].getEncoded(), + anotherPubKeys[j].getEncoded())) { + System.out.println("Failed: it should not get " + + "the same pair of public key"); + return false; + } + } + + Signature signature; + if (test.provider != Provider.Default) { + signature = Signature.getInstance(test.sigAlg.name, + test.provider.name); + } else { + signature = Signature.getInstance(test.sigAlg.name); + } + + // Create a chain of signed objects + SignedObject[] objects = new SignedObject[N]; + objects[0] = new SignedObject(str, privKeys[0], signature); + for (int j = 1; j < N; j++) { + objects[j] = new SignedObject(objects[j - 1], privKeys[j], + signature); + } + + // Verify the chain + int n = objects.length - 1; + SignedObject object = objects[n]; + do { + if (!object.verify(pubKeys[n], signature)) { + System.out.println("Failed: verification failed, n = " + n); + return false; + } + + if (object.verify(anotherPubKeys[n], signature)) { + System.out.println("Failed: verification should not " + + "succeed with wrong public key, n = " + n); + return false; + } + + object = (SignedObject) object.getObject(); + n--; + } while (n > 0); + + System.out.println("signed data: " + object.getObject()); + if (!str.equals(object.getObject())) { + System.out.println("Failed: signed data is not equal to " + + "original one"); + return false; + } + + System.out.println("Test passed"); + return true; + } catch (NoSuchProviderException nspe) { + if (test.provider == Provider.SunMSCAPI + && !System.getProperty("os.name").startsWith("Windows")) { + System.out.println("SunMSCAPI is available only on Windows: " + + nspe); + return true; + } + System.out.println("Unexpected exception: " + nspe); + return false; + } catch (Exception e) { + System.out.println("Unexpected exception: " + e); + e.printStackTrace(System.out); + return false; + } + } +} + diff --git a/jdk/test/java/security/SignedObject/Copy.java b/jdk/test/java/security/SignedObject/Copy.java new file mode 100644 index 00000000000..22406ea2a84 --- /dev/null +++ b/jdk/test/java/security/SignedObject/Copy.java @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.Serializable; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.Signature; +import java.security.SignedObject; + +/* + * @test + * @bug 8050374 + * @summary Checks if a signed object is a copy of an original object + */ +public class Copy { + + private static final String DSA = "DSA"; + private static final int KEY_SIZE = 512; + private static final int MAGIC = 123; + + public static void main(String args[]) throws Exception { + KeyPairGenerator kg = KeyPairGenerator.getInstance(DSA); + kg.initialize(KEY_SIZE); + KeyPair kp = kg.genKeyPair(); + + Signature signature = Signature.getInstance(DSA); + Test original = new Test(); + SignedObject so = new SignedObject(original, kp.getPrivate(), + signature); + System.out.println("Signature algorithm: " + so.getAlgorithm()); + + signature = Signature.getInstance(DSA, "SUN"); + if (!so.verify(kp.getPublic(), signature)) { + throw new RuntimeException("Verification failed"); + } + + kg = KeyPairGenerator.getInstance(DSA); + kg.initialize(KEY_SIZE); + kp = kg.genKeyPair(); + + if (so.verify(kp.getPublic(), signature)) { + throw new RuntimeException("Unexpected success"); + } + + Object copy = so.getObject(); + if (!original.equals(copy)) { + throw new RuntimeException("Signed object is not equal " + + "to original one: " + copy); + } + + /* + * The signed object is a copy of an original one. + * Once the copy is made, further manipulation + * of the original object shouldn't has any effect on the copy. + */ + original.set(MAGIC - 1); + copy = so.getObject(); + if (original.equals(copy)) { + throw new RuntimeException("Signed object is not a copy " + + "of original one: " + copy); + } + + System.out.println("Test passed"); + } + + private static class Test implements Serializable { + private int number = MAGIC; + + public int get() { + return number; + } + + public void set(int magic) { + this.number = magic; + } + + @Override + public int hashCode() { + return number; + } + + @Override + public boolean equals(Object obj) { + if (obj == null) { + return false; + } + + if (!(obj instanceof Test)) { + return false; + } + + Test other = (Test) obj; + return number == other.number; + } + + @Override + public String toString() { + return "" + number; + } + } +} + + diff --git a/jdk/test/sun/security/ec/SignatureOffsets.java b/jdk/test/sun/security/ec/SignatureOffsets.java new file mode 100644 index 00000000000..948923e78ba --- /dev/null +++ b/jdk/test/sun/security/ec/SignatureOffsets.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.SignatureException; + +/* + * @test + * @bug 8050374 + * @key randomness + * @summary This test validates signature verification + * Signature.verify(byte[], int, int). The test uses RandomFactory to + * get random set of clear text data to sign. After the signature + * generation, the test tries to verify signature with the above API + * and passing in different signature offset (0, 33, 66, 99). + * @library /lib/testlibrary + * @compile ../../../java/security/Signature/Offsets.java + * @run main SignatureOffsets SunEC NONEwithECDSA + * @run main SignatureOffsets SunEC SHA1withECDSA + * @run main SignatureOffsets SunEC SHA256withECDSA + * @run main SignatureOffsets SunEC SHA224withECDSA + * @run main SignatureOffsets SunEC SHA384withECDSA + * @run main SignatureOffsets SunEC SHA512withECDSA + */ +public class SignatureOffsets { + + public static void main(String[] args) throws NoSuchAlgorithmException, + InvalidKeyException, SignatureException { + Offsets.main(args); + } +} \ No newline at end of file diff --git a/jdk/test/sun/security/ec/SignedObjectChain.java b/jdk/test/sun/security/ec/SignedObjectChain.java new file mode 100644 index 00000000000..6e93053a776 --- /dev/null +++ b/jdk/test/sun/security/ec/SignedObjectChain.java @@ -0,0 +1,57 @@ +/* + * 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 8050374 + * @compile ../../../java/security/SignedObject/Chain.java + * @summary Verify a chain of signed objects + */ +public class SignedObjectChain { + + private static class Test extends Chain.Test { + + public Test(Chain.SigAlg sigAlg) { + super(sigAlg, Chain.KeyAlg.EC, Chain.Provider.SunEC); + } + } + + private static final Test[] tests = { + new Test(Chain.SigAlg.SHA1withECDSA), + new Test(Chain.SigAlg.SHA256withECDSA), + new Test(Chain.SigAlg.SHA224withECDSA), + new Test(Chain.SigAlg.SHA384withECDSA), + new Test(Chain.SigAlg.SHA512withECDSA), + }; + + public static void main(String argv[]) { + boolean resutl = java.util.Arrays.stream(tests).allMatch( + (test) -> Chain.runTest(test)); + + if(resutl) { + System.out.println("All tests passed"); + } else { + throw new RuntimeException("Some tests failed"); + } + } +} diff --git a/jdk/test/sun/security/mscapi/SignatureOffsets.java b/jdk/test/sun/security/mscapi/SignatureOffsets.java new file mode 100644 index 00000000000..34f91fbf9be --- /dev/null +++ b/jdk/test/sun/security/mscapi/SignatureOffsets.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.SignatureException; + +/* + * @test + * @bug 8050374 + * @key randomness + * @summary This test validates signature verification + * Signature.verify(byte[], int, int). The test uses RandomFactory to + * get random set of clear text data to sign. After the signature + * generation, the test tries to verify signature with the above API + * and passing in different signature offset (0, 33, 66, 99). + * @library /lib/testlibrary + * @compile ../../../java/security/Signature/Offsets.java + * @run main SignatureOffsets SunMSCAPI NONEwithRSA + * @run main SignatureOffsets SunMSCAPI MD2withRSA + * @run main SignatureOffsets SunMSCAPI MD5withRSA + * @run main SignatureOffsets SunMSCAPI SHA1withRSA + * @run main SignatureOffsets SunMSCAPI SHA256withRSA + * @run main SignatureOffsets SunMSCAPI SHA384withRSA + * @run main SignatureOffsets SunMSCAPI SHA512withRSA + */ +public class SignatureOffsets { + + public static void main(String[] args) throws NoSuchAlgorithmException, + InvalidKeyException, SignatureException { + Offsets.main(args); + } +} \ No newline at end of file diff --git a/jdk/test/sun/security/mscapi/SignedObjectChain.java b/jdk/test/sun/security/mscapi/SignedObjectChain.java new file mode 100644 index 00000000000..9790daa919b --- /dev/null +++ b/jdk/test/sun/security/mscapi/SignedObjectChain.java @@ -0,0 +1,58 @@ +/* + * 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 8050374 + * @compile ../../../java/security/SignedObject/Chain.java + * @summary Verify a chain of signed objects + */ +public class SignedObjectChain { + + private static class Test extends Chain.Test { + + public Test(Chain.SigAlg sigAlg) { + super(sigAlg, Chain.KeyAlg.RSA, Chain.Provider.SunMSCAPI); + } + } + + private static final Test[] tests = { + new Test(Chain.SigAlg.MD2withRSA), + new Test(Chain.SigAlg.MD5withRSA), + new Test(Chain.SigAlg.SHA1withRSA), + new Test(Chain.SigAlg.SHA256withRSA), + new Test(Chain.SigAlg.SHA384withRSA), + new Test(Chain.SigAlg.SHA512withRSA), + }; + + public static void main(String argv[]) { + boolean resutl = java.util.Arrays.stream(tests).allMatch( + (test) -> Chain.runTest(test)); + + if(resutl) { + System.out.println("All tests passed"); + } else { + throw new RuntimeException("Some tests failed"); + } + } +} diff --git a/jdk/test/sun/security/rsa/SignatureOffsets.java b/jdk/test/sun/security/rsa/SignatureOffsets.java new file mode 100644 index 00000000000..b813b26d4a5 --- /dev/null +++ b/jdk/test/sun/security/rsa/SignatureOffsets.java @@ -0,0 +1,53 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.SignatureException; + +/* + * @test + * @bug 8050374 + * @key randomness + * @summary This test validates signature verification + * Signature.verify(byte[], int, int). The test uses RandomFactory to + * get random set of clear text data to sign. After the signature + * generation, the test tries to verify signature with the above API + * and passing in different signature offset (0, 33, 66, 99). + * @library /lib/testlibrary + * @compile ../../../java/security/Signature/Offsets.java + * @run main SignatureOffsets SunRsaSign MD2withRSA + * @run main SignatureOffsets SunRsaSign MD5withRSA + * @run main SignatureOffsets SunRsaSign SHA1withRSA + * @run main SignatureOffsets SunRsaSign SHA224withRSA + * @run main SignatureOffsets SunRsaSign SHA256withRSA + * @run main SignatureOffsets SunRsaSign SHA384withRSA + * @run main SignatureOffsets SunRsaSign SHA512withRSA + */ +public class SignatureOffsets { + + public static void main(String[] args) throws NoSuchAlgorithmException, + InvalidKeyException, SignatureException { + Offsets.main(args); + } +} \ No newline at end of file diff --git a/jdk/test/sun/security/rsa/SignedObjectChain.java b/jdk/test/sun/security/rsa/SignedObjectChain.java new file mode 100644 index 00000000000..7bda7cd4df6 --- /dev/null +++ b/jdk/test/sun/security/rsa/SignedObjectChain.java @@ -0,0 +1,59 @@ +/* + * 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 8050374 + * @compile ../../../java/security/SignedObject/Chain.java + * @summary Verify a chain of signed objects + */ +public class SignedObjectChain { + + private static class Test extends Chain.Test { + + public Test(Chain.SigAlg sigAlg) { + super(sigAlg, Chain.KeyAlg.RSA, Chain.Provider.SunRsaSign); + } + } + + private static final Test[] tests = { + new Test(Chain.SigAlg.MD2withRSA), + new Test(Chain.SigAlg.MD5withRSA), + new Test(Chain.SigAlg.SHA1withRSA), + new Test(Chain.SigAlg.SHA224withRSA), + new Test(Chain.SigAlg.SHA256withRSA), + new Test(Chain.SigAlg.SHA384withRSA), + new Test(Chain.SigAlg.SHA512withRSA), + }; + + public static void main(String argv[]) { + boolean resutl = java.util.Arrays.stream(tests).allMatch( + (test) -> Chain.runTest(test)); + + if(resutl) { + System.out.println("All tests passed"); + } else { + throw new RuntimeException("Some tests failed"); + } + } +} diff --git a/jdk/test/sun/security/ssl/rsa/SignatureOffsets.java b/jdk/test/sun/security/ssl/rsa/SignatureOffsets.java new file mode 100644 index 00000000000..618dde714d4 --- /dev/null +++ b/jdk/test/sun/security/ssl/rsa/SignatureOffsets.java @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.security.InvalidKeyException; +import java.security.NoSuchAlgorithmException; +import java.security.SignatureException; + +/* + * @test + * @bug 8050374 + * @key randomness + * @summary This test validates signature verification + * Signature.verify(byte[], int, int). The test uses RandomFactory to + * get random set of clear text data to sign. After the signature + * generation, the test tries to verify signature with the above API + * and passing in different signature offset (0, 33, 66, 99). + * @library /lib/testlibrary + * @compile ../../../../java/security/Signature/Offsets.java + * @run main SignatureOffsets SunJSSE MD2withRSA + * @run main SignatureOffsets SunJSSE MD5withRSA + * @run main SignatureOffsets SunJSSE SHA1withRSA + * @run main SignatureOffsets SunJSSE MD5andSHA1withRSA + */ +public class SignatureOffsets { + + public static void main(String[] args) throws NoSuchAlgorithmException, + InvalidKeyException, SignatureException { + Offsets.main(args); + } +} \ No newline at end of file diff --git a/jdk/test/sun/security/ssl/rsa/SignedObjectChain.java b/jdk/test/sun/security/ssl/rsa/SignedObjectChain.java new file mode 100644 index 00000000000..ba4b00c56d8 --- /dev/null +++ b/jdk/test/sun/security/ssl/rsa/SignedObjectChain.java @@ -0,0 +1,56 @@ +/* + * 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 8050374 + * @compile ../../../../java/security/SignedObject/Chain.java + * @summary Verify a chain of signed objects + */ +public class SignedObjectChain { + + private static class Test extends Chain.Test { + + public Test(Chain.SigAlg sigAlg) { + super(sigAlg, Chain.KeyAlg.RSA, Chain.Provider.SunJSSE); + } + } + + private static final Test[] tests = { + new Test(Chain.SigAlg.MD2withRSA), + new Test(Chain.SigAlg.MD5withRSA), + new Test(Chain.SigAlg.SHA1withRSA), + new Test(Chain.SigAlg.MD5andSHA1withRSA), + }; + + public static void main(String argv[]) { + boolean resutl = java.util.Arrays.stream(tests).allMatch( + (test) -> Chain.runTest(test)); + + if(resutl) { + System.out.println("All tests passed"); + } else { + throw new RuntimeException("Some tests failed"); + } + } +} From 27aac42dc557f13a83642e2dfd9281e4335ecb03 Mon Sep 17 00:00:00 2001 From: Katja Kantserova Date: Mon, 25 May 2015 14:08:21 +0200 Subject: [PATCH 15/36] 8080833: JDK-8076524 has failed to remove binary files Reviewed-by: sla --- jdk/test/sun/tools/jhat/hprof.bin | Bin 282310 -> 0 bytes jdk/test/sun/tools/jhat/jmap.bin | Bin 1732977 -> 0 bytes jdk/test/sun/tools/jhat/minimal.bin | Bin 66153 -> 0 bytes 3 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 jdk/test/sun/tools/jhat/hprof.bin delete mode 100644 jdk/test/sun/tools/jhat/jmap.bin delete mode 100644 jdk/test/sun/tools/jhat/minimal.bin diff --git a/jdk/test/sun/tools/jhat/hprof.bin b/jdk/test/sun/tools/jhat/hprof.bin deleted file mode 100644 index a8f6f7d3f863c8794d8569221b1619c3e7e4e75c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282310 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%0D9t?nJ+nRA%xVwRe3l%JrL~ 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�N`K&*8W-51tGjBHo0--{b6acGLOoWCR3VZ{id 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%0D^z$ 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

    kfS_c>`MD9PwCPLtBETE%* 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

    ^u9QwW1*Jzkb?|PJM*tj=O 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%0AF+Aq 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�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%0AmefqgL-S)ehhzn(VTcuMx3c_$-hIn0Gy2&Rz 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%0DO|>>qf<84C0QT?KX{nryqb)d(tiDJc9vVl^ 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 diff --git a/jdk/test/sun/tools/jhat/minimal.bin b/jdk/test/sun/tools/jhat/minimal.bin deleted file mode 100644 index 1b6ce0ee478257dfd5adad21e4c8f8586a808ba5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66153 zcmb7N2Y3`!+s%g1iy)$apeO-@KqJlx{JNA_TGEf&;Hqa zub;j5-h27axpUu{cV_N@KaclWGw(g;Ew`7QojP{j*j}?{&zw{?ZDOw>rGra{6yRS` zK|!j+(OaDOSBHYa^g=vnfs`sJO4&bqU4TEArB|j)YpQBXE0(6~8#0Zh<7+E3^|Lb# zP1TKsHe<(vRBqucgI)J7LBh}ve-s*qrpBsjK&z`W6^&K3H4Vk(YicT%*4Nfl?VqWf zp03kWgF#hTP-LhIg=$k!HEU?9DP2+3P*FNP)0i%+sm!d_xKn{^W^v5~HxRfY;_5St zsl0SXy0L0yW;|?YtZ%AltgRngQITnAsI4zsQCF?$W`M59()lqVUGu=BirSirruzC! zO=D@gv35mOMd?`cQC8EKS(2&ObQ3|>+|o4{>$U=23vJ!Bbj_04o~52$nqoL8T3Ct} zLNNvuEj5LOBg&J~^lwe^PTUz#(!oC^UTLu1(t*=k7nO4;hD*8hJ zY-NG11jzDgZGhEqskD4eLt|z|@ldVsDBxOKTx-E?4qO|9t3hR(JA2yr>U2ZHwAwUk zodzEda2pG5BjBz8w+*ZvU%R3%U5|p%$n0N0wzbH%g4_hib^&r+RbzQ3*p zf?^A4A2?}D9iMJ!oVdCoQ^$I)EYAKH4DBsLdtqRG>JTu@Sz4b-R~FB$sYo|1SsL(6 zN!L_XhXRm&8gv~jT?e5X1iFp>HQj=}m3_I}K)8`5+(-ynK|AW&HK{67U765ivhRYT zqowF56fDtBflX+KrIV^^($#4Bp>lZ~;7%6YNx*#p-q?U6eNa`+l8N>8Y`u{<=jMQC zW6QI#@N@@H=fH?Lnfev50X3s|h>pQZU^`oEXTkOcb`u=~N9UnPvTuN76HBs*kn9AK zF2(@U6{?P-y0&6@L+RK>=#S7|cWcTtWhzzgSYJE?J+9)a5XeUD)iqV*vt}aCImx3 z&~-h2&d#8-tWVc8(i}4iXqzquWmiktRVYh9+09VuI?zy8RXW}qlV;V|uB?jm4?BaY zn`P=IOg+HV-7sN5n^aYunc37>*VI_vh*q~k+pz`E-7UJipjj6;4`MU6uCBVO0;5T7 zP5IKM#>(1NHB)M9mp5ph!@#q-<=I?#wg68Lu|iw0dwo@7s7>Uy2fl~J_Ygee(KE0E zMQsMQ$(fo=eO1MTOhq+2y+~nQ2d18usi!b)3#Kjp4O6(MxE)+uSgtLEi#^4b0hbvm z%F)0w&d%^&P;6-_wiF6>r@aD-P#um{-%eoYWf^)2!vZjDWf-EZEHpg(EyMI?bL%S8 zh1imCnow7B1t_+*6k7`gyPDpH zq9KEcMOEXP(sKS!CSepj0VKUGNpB(P29n|+2x``)t7bnyi!HQRpseD3*wvX?*0gjJ zCTWPw#MO<;fN+<&4m^DAfG4m_t=S1`gYqWKjgSD?^ z?JKM!!Me@=mo;2=RrTzmwZ#{Kxx_M;2=mrp z?iVntq9~rYqONgGWRkHhIQm(Re!{^uc`~LE^1 zvnASDh}eto5)j3D@yPx~DL8hq9J>fd7jTSa_{|))p>%rrkf9@nY9FQoHrB$%3ame1 zOETE*iL54b9l$Zia?BA9Mq#eu z@cUcN?_<3~Yk=ok@LU12vCc~XhbsY>j`J*hp1`Sl_t5CZoz(c4mIZis3*KG8tbKd< z;F;wUYgSfaYdSJA=Z*k&4~yMHuv{_CH+JjI3AIU%l8g*ii@-DA^2`?=_BMMO9@9HU zT3_6eVIbMllI$rY+^t>U8^f_VHp=Gq0C0f?E)XCiuveg+OV{$ueofpwQk6e@4X}Gz z>|TQ9rpn%KY`Ea=1A1?Z-doUJfZiuS$2ZQizW}z6h3z9SmiNBCr&BWNI=8p;0p8bw z_Z2XgF$)dYR8$#Mf^l8@{3#d~T84$fz~L}$82sikF5OU7;od0w2NY>bkrs+Bpjc!m z&}U4lZfaN>nIz|W0k+7(772_EwZeD2B7P_n-ea!-M}_665Drd^D$P6qsw)~wF(0j| zOxIVk*m1FSl|@wv zij8(zfEr(2Ta$@Yh3t(0F0;U80_3D%xnG0ead>T33(RthSuPm*TCIGI75&)iDvUg# zqTdBX)t0DQh}ZyEh;j^hGv>I5yefcKSnvt~Gf*{w%igJn3UBraplU3tMo?T=)<#j` zF6MsVYAvo-aIB?u^x14`dAoemYO#tak8JB@zXrU{!s`UiFz+Xx&c^Xfs7!OG1GAsS z>?auZF!h0{sNde12PRYAmb`ZMQ83h7hI(P>0)~cwVO%ZN-s#YJ(zk#$SXhI=*gZ6= z@|}d!DBG-EyW~58qtS9S3I{7>lTmHDN9P#c2EZl@Y!V>X7b_jWa2Y)S=t>J+DNqJ% zRp72!AZd)%&*gAU?GzVFlgM_9N zXbukCkGMSmkb^DcV1aM~aY*2{=%1d6cAqZ+eTYRLB4`dGhbE!J<@FHohg$rhf@gUh z7T~?U2!~VY(4u$(podxLVFG2PJ={Psj(Rh#Or<{1Q9;j*0>j~!;c#JKmv)3<;Ovo8 zn3?sF{$(%Vj}K2Fp&T?+0aE%%Ya%~o)fZ<9a6 z@a6`Np?!Cd9A!z45)zha){yuUBNPgYb|uGKsmG>?SzJ_)58ECZNWzinCpRK{PyQ>9pkW2 zwW9DqeG7Pwu{_5JPZ#hU8yH~^Vs+sy0PI)`J62#^{2dp-j7|m0UJKB17Id6|sO$I$ zDC{b?hmW_g;|10SuoLL2-O`H9C1NX|@t`@u(wrbP9G*`!+Bp%fs>XJ4S&j2lc5A>- zwD1!J&bo3^V7&Am+^)74e6;_sfZ`-eagtE5#-F@iif}YIV4rMBP8JeQ6HYNCrb$M3 zs6GJZ6pJ}UFf6Tg24k9kY)AAffYw>iIsvhI=Hu4J4i#PmIB&su0W;XACV<0EJ_h)y z7JjP0sr$45uB&utm!uxx(=7Nj0aN$s28@E%=ONKrn!6J4(=GgTfwPp((47J%Q+8)c zE;@w{Sf_*J3`=r`kZ|UCX5fHlg{~l10ClECohc}G(`Q9d;cz_;+*uZPmf$!*oUL03 z2Gi;cyZMPY#fxT0*k&t(5zJ#su+74>)3UQ1$Z~WFSPIr1d+P za>22RUm;<{relrcKF&x0udu)?1jtjhD+L%j8j9~ZHh|ztOK_zSaK3$2*mEqB8oev3 z6KYqat3nGd-W|Bga$F@GJSx80aM=5b-Vv|ed$1joj=`~Dx!ST^ty!+|t3$%9L9^Tp zmTN4_HNwKfqHCl6$R@6T4JW>vn+Msomh4&~W8Zb1A(IWs$b~X(P7xTcvkcb>1H*fL z*ql(s3SVfNf7q_ol~Ih z0N-N4w+NVh*sX!DGWm}jOEv@aRtvpVpe&>R7--V=b!bdYgX2Gz<3GZ|G4-}Uy;(cy zZR6ZIK;33hw+V_y-_9xzhs}|RS>H~N+;uz>(AzEac7d|Z-9adu9M3WReZOVtde^oe zFL~TyS?&-P_E&f6kjKw!mI8OD#oZ}5PB`x}IMXo3;+EFZ6`97W3crQv(*7M3cUg+N zgn|*fJD~86d^Cy^pt~*VZb8xDd!nfDc>W}C_gLILg5x;#U%zviij)5t8OL$|$-w^C zV*e{x9f9N8YY0kHcl z>^^}p-uKgdnHa?8eJXOfj-a^TQrs^T8-d~hKLYcnYrrf395QL zh#s{>j|vfIVvqR_gs<)wZ>M8^65x+n_+tWRSO2&NN9ed|89%(*8^Fgc@NofB?-PFM z`h%xq>^%nXCoKF4fpf>|Nu$?P%W$umeGZT(E#ygou(y6HfP`*CXg^l~{FDVhC1Cpb zv;mv`gN~YOq6(P(4#1}^@M!^3>oWlm%^?_(HTWTbpRwR)1kBabvw_JK{x!@}Z^sC| zcIbBag&=v>k~}LUeL(Wu21vpk5;s_$voy~M4Lh>u4UHY_;tPc{fP3EJo)_Hqz`d{@ z^)m3q@6fC80R#0R66eF-2k39EYBOl!+5^AVV-b2 zIcI&-GQBBGoO!#uPNH@QNrjjjIOuZ3})|z|{VZ zfMqv3VH&y>2;Q*-?+5`qws(bq`)}sDXn3#lAOPRBz;^}65$L^m1noHQ-ZyRsqW3J( zdqTuv`~83jo30rgY)392eF5bA7Wuv)dH3{#02%6Ai(!a2^>>^oZw$5%EZYadMms(X z*mw~N$Fq^|8m$HLLyP=SkVAp|$RN#Nq`GMYG;(piJhLQvMdf^Oeq=d663*e^{P_RJ z8Lq4x13$K`9}6o--A@dw?J+|OU)}ny2mBKY|3u(@0RJ>F%3s)dmov?s;mFm@O+oXi zrTJ87xP$tcp)oyb?2PPIfIhRJ&ji#3pwA_PK?9E-(&TUj!z*Y}^dEFD&j0 z!ExyQGEgU@R8sGs{Tw7;T9Pk?gkKc=Dn3i&6uhcpy>qp!tsP8Q5J3+BO`CiA0ozeQg?VEiaMBiJY?}do%_=iCKger3pE*<)+N|try2aEhc zBY%`=B^?QF3FMC!`J*7Yxc$i>z3CyZAkL_5^p1dCYc1YZ|H-oaBrF^ke-12{%g*61 zh2^>c`m=@pEKoM7UjnE(iq{3T5kS9K&@TdFLH!zl%(uTn%a_SO{c2Ia3W_7fZw7^0 zm@w3A4&ZMV_?rg)Zh&61cg5v40Drf@-v!9i;y(hQJyvrrmTm|B4~zdp@C?qMtXgK@ z)>|p*;Pe6LPYe1}K%C(G6$EECZd=u^h|N;69|QZB#r`E&R)@dwjUV&%m&(kF+R|k! zS2R|YF2$b5;!=KzV0rjH3b(5Nwk&@O3oG(J66kV#O^{!|jSh@g0r`(b{v$}(o+@x5 z!_6OuO{oG8o5KHj?-M|WnM#F%ZBCfK;JH777x@ zlWHc`+9`-qm)jqpW){>;Kxiu|^NIkkOzl_BXN8XdayJ56WT8a@MRiIw4=hDPpSc+K z7VxF}*hq9g@Xam0x!|$Mnre}Z4||N`k5miG&_Won=bLI7FmU4Hf4jQa|3B|oLr0=B z$XZ&mmO{n?YZZ{myhY=3z_qftR)WI`PO7!Rg?16WD+3xm2I$rn-CEF?wWitxTIJv% z_KnX&0d8Z#Z3Nr};I;;gE(CYy8lrdSayGLwn26UKp_YNOdrFCr|XkTM@bQz|+CR|7q5RFQ zee9!FEv^dp3`2q6$l^B=JlnVVg1>hVmGou4Rls(%*p7llr=RNNcZT!uZIsCP(haCi z7S%~mEbfit7MmeM*OjvY-q?aS7BFjCXR0(6jaOIe@zrg|t(3EX?rhPW1&x_lY7?W{ zQBNHwhUFmH#FA_xB%?vn#aVJ2{*JNsuQ$lMSn@7Hjt#xkrn+KNp91*i z7QVT_F*i;12rQmaTi#T$)Qfhs@6PoFK@UsNLkQS%dIkj2^5(3m(|f&HtbS5GEw-m% zS&g@FW5a#^D?o2y(OU?bo^Kg=uGUV`uTgged`k=8QsDHwS0X&DA9t%#y(~d5A)x15 zvCzCe1Km8{Sdpoy$JKFN!S@4pD~sJqu$c0twl>QB+Bvxich5C21>n{exU~S;<@Tmh zY5D$L3P!wtMtAX@2z>TOP(|{-wyabcT0!rUBN^!ukn}9qzUUX4-df3fthV^CP#U zasxrKttHu3NU)qs^^fTGUIRFKp=NLPO|@Hxh;(LfKf=s|+!kTBTjWr_3aGVb%0eE}Y9!Gi_d9^fI1ybI{z z-hso<5Sx97WN(A)Ll@zWQ#kKy$UD^L9jfyV;}z3zUM$8_!))GRlD9Q@hvRH3ob?T4 z9d5G@m#l4(bwmTd_!iFmCNht(nMX)w+B*_ox>yp<%kmp(^Ny6fB;F2p($f)Q?6IV_ zvzfP(%_GyMLD*#(P@_|(n;)?4$K+X%(#|Gi1I&-5Oc#)0Wmf`tiR$xQ9? zZW_cti9f~}CcEpZdVkX& z`|ytdp9T0&LH0XyCm`9~l1vm5u6QSz5co5Q=vP(sevWU^XCPZ!P?YCXb&`-_dnGm5 zZ4tlE6gLT*v#Ddj!ino-u)MtxEskw>iqC?VBi1(6n{Q4UX-8DpF9Ev(uwl$8Fs=d1 ze3%@VbK?OkcTsLi)#t(CMe0h+QzkqdRi={14Cns0J~NzD`N*$;ybj1w%q&QbD!Ybb ziN=;GkJ*oJMx|~5dItgoP5Y;X(ZOL&FxG1;z6H-s;9*xWO?Z0ZkLgJ~oSXPgd;|E+ z7Cv3z>@#K~p}DGrM4^dZr1Ty-LJVaKgU_94FESK2zX$-(G5# zhWj^>7NY>oE5;HDzXRb5mT;C3vVrdA`vObQYc~eRPJSSM0vIR6`FYGQV9sx5`{21X z%WLpXvSf}Q!SRaam@OO(NV)cCI$n;6<5RqHuMEyg1I&I=;o?dW-8r0e}f0xrTIe%6&`lodxd!-Uz>J&^$*Cf z^O--Kcp+m`**i?e+rt%Ab^Pj<@6lR(!>ACOQ2FDSU%+fC`-H(2xZzbgp4Yq<^R<2` z@qnWc9N4SLpGcT+a6-E8luUJXtQ-a~~U1meF6F85QtKCJ$L$maf zQ%6n&i_03ZKN9F}0Uj)t@)r>zx>@xq0(|7{DaE^HyqA{+EZ7$+#DXV(34y{g0)JE{ zvqV^fBh`SmHE6M($zMh$q2-!7lS~WaTvV+L&y|?b&5*f<0Hit?eI;IWe3<~rv>yW}4<_P4{lADCPCCuu znkQ2yh{Ps!qr`?g!ynk#G(%LGijZ*R<+;uYMnlPhab;z$ zQq_7|SUnB+w1G(7E;MX-jiA{ONlQ!87?2beiLu<<|Iiv+2qRk{wbUjs+;ml&aJNQ( zq|mL17W=5TsU)bTJS$nLmZ7m?=V(GzP0Waqd;*y3gpFGXtHxARhnh?mJY22Uk}*!U zvsFmsT+L-OI7`HQZfJju2mHqpYK_ze$+)3|(AL4yPqTdDk@zfag+Oz4`WnC z=Oj=24rCx^tnHv1H# zH((q4x`T;FlJYFoCGn{$iFPQ3_DCI&aNOr8x2KR@;H$FdZvf zTU3}(u7mu&V{_$IjZF08a9zZ#+D9z3RjDoO1?}9jnNm7cz$Hxbo;}V9X%aI&!cukHg127=-g!ua<6w zhsUqSpkN$l7kq;E9pjh^uCuA)c;Gp zHdD4p^W-Y}C<-k#8^}>wHw&5>bo;$l>;6vZ-Woc4BZb;%n zjQlKvQ;^m{F*}HB#1RhFc|(T2Cg9^xacc1XxEN<2$jO;!K9uVo1-L~foHXz>FF5|1 zgbn2M@Js1pq)9AJ47=e+ZbRrSGKiB;=NPm9+w*`Ea_kJdrohG6DL z5_9*_LH}L_y%+)SgVYxZ2gIIw#_23CPU9nSI-Bi2A@(JJ(WSGH&W1~S7ewN8PRWAt zx*!>+bHk^Ru{iZZ9+IBJydd3I$BAJ%&m#@O5?B}t%eKhNu$+e^)`i0ILnJIE2uVLA z97KCzDFyO;+e?@=svR{{Ux^vM_ksr1U2-09fiH+T*dJm#cs{eC#@+%m@ckA~C9xO! z#~Cr~0Eh*9A+WarJ6fP<0nn;aJKull|5u zI3%pZd&(Lc@cSO#+ipb6GQ8AfiHe*t!?&H2qs!FUR?Hlh#U-R=MwoNcKlrCB`H!%V z|2PKrM;d@M5D6#hp3Uunyqq>0HS&~I@(MYM@s59Dx;cfv9O+W#MU^}rYVH;S(q37O z-zy5yvhrQ!h`^qD#_xqdH)T%OuOt-7cv*l$be&;{BLnU`cpi3w@M`%!WXy}93VJoX zxEb7==m`GA@ZldLI0$Jl(hww^-h2FHxW+n#qnAP9ux)U9#pxLB(SUU-mJy#oZ%VtGkdkzbYS?V)l9Q7@|5UT?vY-fQdf zlvVrIaMea2v4cN|JNSN0H)pjT((k&u0Qw(k3d|4-=xC~>0_H?OZ!9o(1-wx7!Nc21 z$~K@($6yQ)q`M7C=x_teqvL$_cDN^p((;@m#~qGlfDXy`QZS)mbVm{rjAXSHT&~U8 z34&mT}qd3MO?TF;>1=F@WO9DG|Fm08$-A!cWv@?LLE_Wi)wvP*Nbwb;= z3k0#qYukQTw(Sg?b`kqD%UH08hoT0D;$FZhyzAe$VBPIFcB96DjcxBPBxl;b%pjj%CVX}0a+RFy9vQ4{5h22s+<=I zP740Je*8p>Z(>#ySQ+rRE#l$n+P#rBXlHreU;}Pk{CLvAMEK{r+9g~5YUU)vA09;O z3k5o6%v9@oX*B9VofN1QBhYyAJTq8Q#A;ZJa5u@D|0@6Oj44}ORhY3gNIR35T z$kHf7nu@fm&h(GU#9;fGbdgPi3RdHDknAv1@T7P^10QLu^~~0&=@cN*!27&HC@j+% zWPxw&jaqpXV zv0%<55kW|gBbbx%YnDfATW3KK4Z*A0)|3k5OxQR}>=j!%*LuRURUWm)qbF%*WZz&n zW~B_tTGQ6w!(jD&Dzmx{=iTGeb?FNHWQR6%HpNJ~dGTD>KUjP^ZNBy`k2r;R#xc<8 zYVYjqLZeBtwV$nS=z&qgXo znxn%q7ig)BmL+wa&M*%dSiqs)PpfIB)UYznMVf~+S!XIznWPq&j1r6aQ1P527HXwu zJAktIqxJOe;d$Zi)|uz(($GhE~b~894Wb6?*?A z-&$poanWQFGfSZ6#gg&=zm~f%Ky0}$BH5N(=+Aw6;o(bR#^i>&&@#P*Pid%6YA@R; z2c)6y3ojSySfznJ3P}g^Acm{Cq&~7UGhA8*1D9%-GByK)E*Y-YE_F~Y$y}lmZe?_)jZ`L?OPEYr)ncnk+j5R( z>8My_&|e%?)k$TN^5yKnKStgNYF=xsomRUlQ$HTR*dX!R7SCU|K{j(?bFiEV?E=^i zSX;e>bc7<=8Bl9{`M?`hIoo(+DZZG;yTS6X3m(2{6=5%$Rc&;?(DY|1Va$bOgI+jM z;4Sg+t&%XH$^zcPr>&VSeSLK7ZC!ihZh)#g_L1o52*^8jEfA|S%OE_6oXmtegHAFv zK$p|TstA@K^h=Sdke2DVu^~m{c9mx7tXR1Juw0nL$cbQhw?q$y@nh!D6TQOmzJCx| z=Tw7{cD;*4&(N&bt+j^4Btw$2J4|P&g@CK#+mJYB-dKPy^XOvPL={Uliev>+ z4N|RUsRR0Yqyv#;3-2+_(nYc8J?1){X;YQSY62i;(c5P9GsYTGgH`x3VTki* z@O7|uelz9#esH`VsR3y_ovEwJq_=THJKc>?A%!8EE|WA%H^tHj75+wtj!=^|SSC}S zV^MjF&aiSrYPu^moJ=(#t)w~$VOubKTA!(_#_xN|v+j8IS;_d&)Wy*YuOgILk!&yA zDs(MzH3X~y+Wgyf5H?rVt%6mn#X9Zd8ZboFw9za*6bn18HNvD>_IKEFhi2)iSoEZC zf1POyl}S(fLYcNyne>!se{IhJ4tws@s(L9FPFoIe#fEL2Qwcp&xL&htrC9V#AvEpZ zT4mBRg;1v6DwCcF94NJB9PIeqwpiKlRDGqbK;9E8$1}Ah7VfJ#+OhI{jwFkw&qUWY zc=*Kzb%hBJwuE0O!sm3690I}ZNOvHy&9b#UsWTiJ$$);k;0hh>Vilu5aYYhw;06_H4GAFJR~q2yfRYrEAL>jn>3$gkn& zb+CG2aN}^Dsjtc;O~GW+MjoM5`9^A%Z4`^Nl_R36N>nD9UUC`l-&<@C zHQzKeEov~o)hj_@H})-#Y4q^y=*EsDm|2l*H`X$*oj3}DNTgFewG;i6ee8gaL^_I2 zh$S7s@Lk5dxlb_NSZ>ucM!qObl zp-4Mvzt=j{%+oCW6-zUq*9wznIoiQ;kY*X6SXc#)78adppvojwz+}{_j@gjgrHVz` z=P^*{w@>yfKiCqHWkS3U3pd1Lfmu!*l3fR+25Ga7gCJTOFKg!pDYK4+Imgi?B>#x1 zEf{{Z-(Zr;GX~Foa#S9Nx$#HZyyHnuG9+1ThPI7PfFSDNC~f~>W&iQ8`vfH8gV@>{ z3_oLMH5|ATE$`3xv<+a*hOw;TJiijCIQEtd&j7g--cP(De}L?s)iX!V#nT z@~z_zLuk0Qa;ezi(#Tr_e#Iw8zb`QQy{aQ{Dg^6|z;G3Tb?`iobSjeHx;6pBZ|cQ) zu^^mgZD?Xf*ueRrAA~M=_UMNA{7!Uu%*|Q=L z(dH2SCC5StpUM*296y5;%!?#3d`n1Z|KAn-dEH8d*AYIGIV@c2z-V1lN2my&hRB|d zbOzFyqGL0l|1s}TOTNi{7V@w;a{}=X)@6@^w4)Fp2!#cPfUhNr70}rhi*dcM0NBTY z^_LRu@Gw=MS;Ch$)N8-ap#VsY(l<@>Bb8sg(|H!s*+}PzS@5f{kfl2z(@;@gRfqR# z#%w#++SbIpDBPYPE!Jk7XEW&1uhQY&PML8o)SrhG3NM;)VKY>b;3}gSh#FE@BsF9` zw;j(X1M|WbDdMw*WFrWgS7va_D-*hog|5D^g{!NN-+jID}R?XJ7;2Pv1^cA+j_uN8Jv)1<)l06gsQ91j0xR zQw7?X?UgYX!-z}7812%f4whz`We3G_sW9NvA5I2?p>4QaMlbNXd;f-&c{>7Ll9#Dh zn&9KX}i7X z=+53Q69vI&b=A=_h*-34pjwhMJBsp3eD(EIU9oR;gfmpuJ1fs*uiyrF=6}T&-z3TJ zqB6-|fyty*-Q=((#4=W~h^m{Ss>Z2IqRM2_s&3wps_}}28)va39e>PO% z%M^=L`2RqaU*UVg*ls~D6Lj9OI(nN|1xk`$ zJ5^bG8?3w?=?*0SD`4ysyUV>Bd?`3)0uhI?#=Ch&{np$(c{m0x$lpSzImMhe|q|F6dqvg0ltooR~Y zzrujeJEXJWaNYyIImNg4*jE{eXbeO>ZO;|n6y{$T5m&E~AzdbyK1XO=yO%mh25V*0 za;&y;y0TJw2j0iHS7(}`GD+_c%QRDEl4g=7laBp;4txBS&;SUxh-Bqizh&J* zdFjvi@UU=8e~n?k!QhV81D0n?@W^e%P=_*0`N$6LKBW7R9?;R+O=Xe}&Scbqc+jfS z1ru7_%~mWt$aqjxNgd(Zsh9VCdoJ;Kf7-TSX%3O?Lg=jL=p`z!0iM4^b7V zRDAc--aHIpw3>yyDOcV+1Wz80dc%pw*1>Nt#CnQHpn5q{6Z2t$@;nIpikoany?F`d@+U4OHLtHxK{NoKwSXVht@87#L!ffqj`B27L#8!?Zy!KoDz7x|H`& zem@I;pF?^c=>^U5qQk8c%`#uHyeJI#d{|1E)w(3~-nW=9FIgo`%nDzA24^2_#mgJA zVoznoOVIu@lJP~X;ATRNILJoGPAUSwBX^tLx7r3-bAAPR$ea&c_G)u7%AEIM$_HYS zcIrd0aBqRr76zAULYJvOvKbCk8T|2n6dn$?4h1c@UVdWRekoILA~-IueGCoUB^Zp) zn_xoh>y)2B5Gxt&>0;&Shw$qt4k-%>R`XS!CD`R!~Q?Rc>YGNL!{~crtH2V_8 z{wY{}4LXjWfkEb6WcdSUTP<~l&o`uIsZzrg;%7*oQ=Mk{!l9;>Hnu9l!gb~sWYU?I zsZ4sg^@YTX{lL)RU7xX-eW{!o3U7ZaC`g5d)a6RUmvjQjl!|udD+h~yk5;}~v3!-p z^0k9yTkY)%#qzag5pUT&535Mm)YkCogtqV-O2B^|#4o@5gE{?!8z30lz;lhzHxhRZEWs9Yu|pQ3_uJ<28gDV3aw0jgOKB*&TyJGf2A_N8fO23 z^efVDTFviZh<5Oy0eqEW;l$-gq~DR=lOS-px7&S1fjqI8{J4&5{BOTSpT-6I(9O844kY)c|em z0ZI*q?oH&z-K>R=z_X)$VAk{+oQQlVyP4KJcCc&hrsGk(Qy%B4k z$i;#yoXFg0o_D~jl{yY==4?Bt`To_6`^Ck{csSX*s3+3FtEYYUl;e8w?%fH{3OTSf zC$Ca?pw7_4X5i={Yajo0(_H%;3m^E8U1&F??ns*>_0TLm9gZKS%l9~s#IW>CV%cIt zEXOOBEs|Kagh$aBKd5avAz%p&E&fX_*@;fUCC!TEOT=XW8gW zQ>k90B?sKJ??x;1XCNH?r`FZuc4O@B-yRU{x?#Q1+9`*szG1Npx&%23ok~T4aVdX$ zW;z7Z92PigW=zTY>*v;BZcg?;BAq5Bl%YVIj5REqiMyW_?_xhf2c)8 zFe{wd7&m?ZSuY)+@-m!YE^#0SSR|+GT5Vx>8d z05FnmE=rS2MgJR#czbm|Z@uL5p+C|9q=C9VlsXvhkvQQ8Eb^yX1}?$;H(L${YM%OX zgJ+)qo-F^4v-do_5uY05g`jYrXY|_U(4cR(q{tri%C`x>sE|L++Jq%xY7o+3?a>ei z`cd(SF*!YmNx=lnu_l6Hh|X|^%3wDJQ$w_hq43}lq=!5YOxXP&9cYV(yRYQ00?hQ^ zrNG*_hi)3uXjLV*^$h8<^{kxdTjN+cMsvV12ky1%}b%91z=kDgQnadzd||@Ldo5lDPl&4Nh_w$UdGK2IVJx z^d?z~3z$8b70GUfq&i8&NxTtR$7A-fwz$LNmf=3mhT7vn759kVM zW#q@UVkJJ7tfXOPl=$J8KV2^ToX}>**45z`_0s(HYN81f@tlUuVZkDiosa;J`QO-(ikyl6EG~6f^f~HCV1swY*-8%`h(FQA~{iBqKi5b zoJh5qXv=g7U3_2c{D?`g*0q(d(VRNf;)j~f(kxdfmg(XuKK(wX8{Djl z{yJQ&+GE=8?^ji!nzR9J7p>|luSr_<+Zkyua z^58_w)fO-r_h-b*VOU$(akMt$y69o*AvJZ-SGrREs_2U(^M0T8X)8_<8U1<&S7l}@s06k-JH8zuZ&>@;oN0+ zq&>u#wxF(UtPTC{9a~Kuz7MG8(eVp0srf`QC($YTys4 zh=o04mDt|QQ=*+-9I>K3tT;qxz!+=_P8duE9hF;DR4NgT4ANqxC7NX^Sfbs)NX>Gq zV$oC6r7gU*-LSuK|EkCMf#}i(7Zen-DdU6xZ~g~=7j|xrq2qOQDTM_Et!}{M&hjaO zHdq?H3jszc`Q&eR;)iZg&8I-nTs{Sn0&fWfE#%V**8L+7^&v-ULAo zKUnRysyIn-MUvozBtgFTZ{SRCNi0>`zI8&k_WxpQ3zS~Vm|uq;84{WD4M zbAlk(AxY5MC7>UP-D}o`pdUvh2^J*@@T>0bdbLM_AbX8VKy&YN31AhDp%Qe=PY_@Y zTUNlnW#55Gh#Oo2Do^T5a+NLw zV^y6b*eXeIP?Dfsf*|`vf*`kXl3;C;;Cz>Wo+nn(>s<(XzG;FWd#g)89nZT2q}nV& zfZxVUXdiDU2=L2H4g{4uD;$;Y=t4k{eLqR?dXgZ~!7Y;ziJMMc5)iqKk_3~J1e+%a z@XP0pSkd#_69lCqlqU&#CkV2y zCJ1sTCJ9<53HC`6j7<`pk|gMxAjmp z*mKVK47m*uZ@3VxA$ZdzXbXYU!4?oWN6wZIBu#|Zw#Qj2?gzy7!g1oBAizu}k82xo z1Qv05+~Aj~oJA2P?{7;S#ih05|U9RPTZ6Q-@$}>m&pR`p+E*e8Jh#2AL6k zNglT?piFglMoY=1iyf4p^Iup65?kd=DQF-LNL!I_$f*79R%er z#P>;pQpg?VM&%B<`R6F zB=`)1Ou{6FDKNiN972HFTu*urhtQXr_Gf_d1L6n*+?ph#7fsV%L zu%Dg|+@f*|CMF4*B?%@Z2|6YTI=cixCc{#b~_2$)YP+O6#aT#idrxmdJ5Yb!^N4pRl&v&%~T1ABU z`4%dl=0IfOc^=mqJ?`L>KMh@!$3?=JU@a#sms^3a!@C2gcyr_UyJqyH~s6Y@y zlLQwg2^i{-RYEl|NzgwkpjDia9SK1%Bsyq6J;71I15d!3h<%^@f+WFSQ2}+_g&_Xu z5on;>@V1?_2girn;O;LWdeGv1b%pt%_NsICo4uJ{D{tf|N!d8^O z)*;|YoOvroF9@~r9J{5>TnL0D-^C%waq;t|OF-o-T>{R1hC2jip?Hf!U_5Vd2(s*C zMmhwh7p<`Z9d;9|Y!ty-@(8F_K+qM5A+ev{;I&`yz!ON_t&a*=v|Pk}?GTtn+{F$7 z-W6DsZ*mDZt*vqh%)De(R3KJu9u>eUqx@Efz)=8Xi=qOtDjgNT zDudY9A;8#p#|bV0i}w1c!1}T7yQlzuaHG+@qa)gI zjE++r2xIP$B*EEHft28mQ2~|rg!1iN0`B5`<`R?vaXJJYk=V}dr#G!VGkD+&@HPhT z{R&Y8uLzpgNkj#?kD&Z#2Nm8ySd>2?Di8?5-8x=?oSDhqS z9u-hIN42F6f!V*h)FCkDW?X^^2+1cd0nOdpB_QHsmwV~L55WO4%e6y@5f0IMNdX;B03st!P E1Hu>51poj5 From b04e91828a8b4523181318fb36c7e563b4a41286 Mon Sep 17 00:00:00 2001 From: Athijegannathan Sundararajan Date: Mon, 25 May 2015 19:09:44 +0530 Subject: [PATCH 16/36] 8068978: All versions of javax.script.ScriptEngine.eval(...) method may clarify ScriptException throwing Reviewed-by: attila, jlaskey --- .../classes/javax/script/ScriptEngine.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/jdk/src/java.scripting/share/classes/javax/script/ScriptEngine.java b/jdk/src/java.scripting/share/classes/javax/script/ScriptEngine.java index 5d04247df99..c090b308d4c 100644 --- a/jdk/src/java.scripting/share/classes/javax/script/ScriptEngine.java +++ b/jdk/src/java.scripting/share/classes/javax/script/ScriptEngine.java @@ -132,7 +132,9 @@ public interface ScriptEngine { * * @return The value returned from the execution of the script. * - * @throws ScriptException if an error occurs in script. + * @throws ScriptException if an error occurs in script. ScriptEngines should create and throw + * ScriptException wrappers for checked Exceptions thrown by underlying scripting + * implementations. * @throws NullPointerException if either argument is null. */ public Object eval(Reader reader , ScriptContext context) throws ScriptException; @@ -145,7 +147,9 @@ public interface ScriptEngine { * * @return The value returned from the execution of the script. * - * @throws ScriptException if error occurs in script. + * @throws ScriptException if an error occurs in script. ScriptEngines should create and throw + * ScriptException wrappers for checked Exceptions thrown by underlying scripting + * implementations. * @throws NullPointerException if the argument is null. */ public Object eval(String script) throws ScriptException; @@ -158,7 +162,9 @@ public interface ScriptEngine { * * @return The value returned by the script. * - * @throws ScriptException if an error occurs in script. + * @throws ScriptException if an error occurs in script. ScriptEngines should create and throw + * ScriptException wrappers for checked Exceptions thrown by underlying scripting + * implementations. * @throws NullPointerException if the argument is null. */ public Object eval(Reader reader) throws ScriptException; @@ -177,7 +183,9 @@ public interface ScriptEngine { * * @return The value returned by the script. * - * @throws ScriptException if an error occurs in script. + * @throws ScriptException if an error occurs in script. ScriptEngines should create and throw + * ScriptException wrappers for checked Exceptions thrown by underlying scripting + * implementations. * @throws NullPointerException if either argument is null. */ public Object eval(String script, Bindings n) throws ScriptException; @@ -191,7 +199,9 @@ public interface ScriptEngine { * * @return The value returned by the script. * - * @throws ScriptException if an error occurs. + * @throws ScriptException if an error occurs in script. ScriptEngines should create and throw + * ScriptException wrappers for checked Exceptions thrown by underlying scripting + * implementations. * @throws NullPointerException if either argument is null. */ public Object eval(Reader reader , Bindings n) throws ScriptException; From abaeabd0cdcfb13a0e6bb4548750e216e5b81c03 Mon Sep 17 00:00:00 2001 From: Xueming Shen Date: Mon, 25 May 2015 13:52:28 -0700 Subject: [PATCH 17/36] 8042125: Japanese character converters incompatible between Java 7 and Java 8 To add the missing .nr and c2b mapping tables Reviewed-by: okutsu --- .../data/charsetmapping/JIS_X_0208_MS932.c2b | 7 ++++ .../data/charsetmapping/JIS_X_0208_MS932.map | 24 +++++------ .../charsetmapping/JIS_X_0212_Solaris.map | 4 +- jdk/test/sun/nio/cs/TestISO2022JP.java | 40 ++++++++++++++++++- jdk/test/sun/nio/cs/TestJIS0212Decoder.java | 21 +++++----- 5 files changed, 71 insertions(+), 25 deletions(-) create mode 100644 jdk/make/data/charsetmapping/JIS_X_0208_MS932.c2b diff --git a/jdk/make/data/charsetmapping/JIS_X_0208_MS932.c2b b/jdk/make/data/charsetmapping/JIS_X_0208_MS932.c2b new file mode 100644 index 00000000000..45a2a5cba95 --- /dev/null +++ b/jdk/make/data/charsetmapping/JIS_X_0208_MS932.c2b @@ -0,0 +1,7 @@ +0x2124 0x00b8 +0x2126 0x00b7 +0x2131 0x00af +0x2263 0x00ab +0x2264 0x00bb +0x2574 0x3094 +0x264c 0x00b5 diff --git a/jdk/make/data/charsetmapping/JIS_X_0208_MS932.map b/jdk/make/data/charsetmapping/JIS_X_0208_MS932.map index ee74c0b2753..9160866f6c8 100644 --- a/jdk/make/data/charsetmapping/JIS_X_0208_MS932.map +++ b/jdk/make/data/charsetmapping/JIS_X_0208_MS932.map @@ -1,7 +1,7 @@ # # mapping is based on JIS_X_0208_MS932_De/Encoder # -# moved following entries to .nr +# copied following entries to .nr # # 0x224c 0xffe2 # 0x225d 0x22a5 @@ -14,7 +14,7 @@ # 0x2d7b 0x2229 # 0x2d7c 0x222a # -# and following to c2b +# and moved following to c2b # # 0x2124 0x00b8 # 0x2126 0x00b7 @@ -144,13 +144,13 @@ 0x2241 0x2229 0x224a 0x2227 0x224b 0x2228 -#0x224c 0xffe2 +0x224c 0xffe2 0x224d 0x21d2 0x224e 0x21d4 0x224f 0x2200 0x2250 0x2203 0x225c 0x2220 -#0x225d 0x22a5 +0x225d 0x22a5 0x225e 0x2312 0x225f 0x2202 0x2260 0x2207 @@ -158,11 +158,11 @@ 0x2262 0x2252 0x2263 0x226a 0x2264 0x226b -#0x2265 0x221a +0x2265 0x221a 0x2266 0x223d 0x2267 0x221d 0x2268 0x2235 -#0x2269 0x222b +0x2269 0x222b 0x226a 0x222c 0x2272 0x212b 0x2273 0x2030 @@ -620,19 +620,19 @@ 0x2d6d 0x337e 0x2d6e 0x337d 0x2d6f 0x337c -#0x2d70 0x2252 -#0x2d71 0x2261 +0x2d70 0x2252 +0x2d71 0x2261 0x2d72 0x222b 0x2d73 0x222e 0x2d74 0x2211 0x2d75 0x221a 0x2d76 0x22a5 -#0x2d77 0x2220 +0x2d77 0x2220 0x2d78 0x221f 0x2d79 0x22bf -#0x2d7a 0x2235 -#0x2d7b 0x2229 -#0x2d7c 0x222a +0x2d7a 0x2235 +0x2d7b 0x2229 +0x2d7c 0x222a 0x3021 0x4e9c 0x3022 0x5516 0x3023 0x5a03 diff --git a/jdk/make/data/charsetmapping/JIS_X_0212_Solaris.map b/jdk/make/data/charsetmapping/JIS_X_0212_Solaris.map index 27d450dcf53..c73d471ccc6 100644 --- a/jdk/make/data/charsetmapping/JIS_X_0212_Solaris.map +++ b/jdk/make/data/charsetmapping/JIS_X_0212_Solaris.map @@ -23,7 +23,7 @@ # as the round-trip entries. # # b2c and c2b all have entry "0x2271 <-> 0x2116", so the -# "0x742c -> 0x2116" entry is moved to the .nr table. +# "0x742c -> 0x2116" entry is copied to the .nr table. # # mapping (c2b) generated from JIS_X_0212_Solaris_Encoder has # two "dup" entries @@ -6126,7 +6126,7 @@ 0x7429 0xff07 0x742a 0xff02 0x742b 0x3231 -#0x742c 0x2116 +0x742c 0x2116 0x742d 0x2121 0x742e 0x70bb 0x742f 0x4efc diff --git a/jdk/test/sun/nio/cs/TestISO2022JP.java b/jdk/test/sun/nio/cs/TestISO2022JP.java index 8ea4cb7faf7..fa533ef7a82 100644 --- a/jdk/test/sun/nio/cs/TestISO2022JP.java +++ b/jdk/test/sun/nio/cs/TestISO2022JP.java @@ -22,7 +22,7 @@ */ /* @test - @bug 4626545 4879522 4913711 4119445 + @bug 4626545 4879522 4913711 4119445 8042125 @summary Check full coverage encode/decode for ISO-2022-JP */ @@ -33,6 +33,8 @@ */ import java.io.*; +import java.util.Arrays; + public class TestISO2022JP { private final static String US_ASCII = @@ -608,5 +610,41 @@ public class TestISO2022JP { if (encoded[i] != expected[i]) throw new Exception("ISO-2022-JP Decoder error"); } + + // Test for 7 c2b codepoints in ms932 iso2022jp + String testStr4 = "\u00b8\u00b7\u00af\u00ab\u00bb\u3094\u00b5"; + expected = new byte[] { + (byte)0x1b, (byte)0x24, (byte)0x42, + (byte)0x21, (byte)0x24, + (byte)0x21, (byte)0x26, + (byte)0x21, (byte)0x31, + (byte)0x22, (byte)0x63, + (byte)0x22, (byte)0x64, + (byte)0x25, (byte)0x74, + (byte)0x26, (byte)0x4c, + (byte)0x1b, (byte)0x28, (byte)0x42 }; + encoded = testStr4.getBytes("x-windows-iso2022jp"); + if (!Arrays.equals(encoded, expected)) { + throw new Exception("MSISO2022JP Encoder error"); + } + // Test for 10 non-roundtrip characters in ms932 iso2022jp + encoded = new byte[] { + (byte)0x1B, (byte)0x24, (byte)0x42, + (byte)0x22, (byte)0x4C, + (byte)0x22, (byte)0x5D, + (byte)0x22, (byte)0x65, + (byte)0x22, (byte)0x69, + (byte)0x2D, (byte)0x70, + (byte)0x2D, (byte)0x71, + (byte)0x2D, (byte)0x77, + (byte)0x2D, (byte)0x7A, + (byte)0x2D, (byte)0x7B, + (byte)0x2D, (byte)0x7C, + (byte)0x1B, (byte)0x28, (byte)0x42, + }; + String expectedStr = "\uffe2\u22a5\u221a\u222b\u2252\u2261\u2220\u2235\u2229\u222a"; + if (!new String(encoded, "x-windows-iso2022jp").equals(expectedStr)) { + throw new Exception("MSISO2022JP Decoder error"); + } } } diff --git a/jdk/test/sun/nio/cs/TestJIS0212Decoder.java b/jdk/test/sun/nio/cs/TestJIS0212Decoder.java index 6bdc46ec45e..912f3c90f50 100644 --- a/jdk/test/sun/nio/cs/TestJIS0212Decoder.java +++ b/jdk/test/sun/nio/cs/TestJIS0212Decoder.java @@ -23,7 +23,7 @@ /* * @test - @bug 4179800 + @bug 4179800 8042125 @summary Make sure JIS0212.Decoder really works */ @@ -38,25 +38,26 @@ public class TestJIS0212Decoder { (byte)0x30, (byte)0x25, (byte)0x30, (byte)0x26, (byte)0x30, (byte)0x27}; - public static void main(String args[]) - throws Exception - { + public static void main(String args[]) throws Exception { test(); } - private static void test() - throws Exception - { + private static void test() throws Exception { CharsetDecoder dec = Charset.forName("JIS0212").newDecoder(); try { String ret = dec.decode(ByteBuffer.wrap(inputBytes)).toString(); if (ret.length() != outputString.length() || ! outputString.equals(ret)){ - throw new Exception("ByteToCharJIS0212 does not work correctly"); + throw new Exception("JIS0212 decoder does not work correctly"); } + } catch (Exception e){ + throw new Exception("JIS0212 encoder does not work correctly"); } - catch (Exception e){ - throw new Exception("ByteToCharJIS0212 does not work correctly"); + + // test 0x742c -> u2116 mapping + if (!"\u2116".equals(new String(new byte[] { (byte)0x8f, (byte)0xf4, (byte)0xac }, + "x-eucJP-Open"))) { + throw new RuntimeException("JIS0212_Solaris nr mapping failed"); } } } From 7b3c4b4d32bec16907056f9b88cfb934fdc412ef Mon Sep 17 00:00:00 2001 From: Erik Joelsson Date: Tue, 26 May 2015 10:43:53 +0200 Subject: [PATCH 18/36] 8080983: libdt_socket: Build failed with VS2013 SP4 Reviewed-by: sla, ihse, tbell --- jdk/make/lib/Lib-jdk.hprof.agent.gmk | 1 - 1 file changed, 1 deletion(-) diff --git a/jdk/make/lib/Lib-jdk.hprof.agent.gmk b/jdk/make/lib/Lib-jdk.hprof.agent.gmk index 7f01e04790c..7c43331b33c 100644 --- a/jdk/make/lib/Lib-jdk.hprof.agent.gmk +++ b/jdk/make/lib/Lib-jdk.hprof.agent.gmk @@ -49,7 +49,6 @@ $(eval $(call SetupNativeCompilation,BUILD_LIBHPROF, \ CFLAGS := $(CFLAGS_JDKLIB) $(CFLAGS_WARNINGS_ARE_ERRORS) \ $(BUILD_LIBHPROF_CFLAGS), \ CFLAGS_debug := -DHPROF_LOGGING, \ - CFLAGS_windows := -D_WINSOCK_DEPRECATED_NO_WARNINGS, \ MAPFILE := $(JDK_TOPDIR)/make/mapfiles/libhprof/mapfile-vers, \ LDFLAGS := $(LDFLAGS_JDKLIB) \ $(call SET_SHARED_LIBRARY_ORIGIN), \ From 4f8755f9b8aaf41e6d875d2918d49ad678163e10 Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Tue, 26 May 2015 22:10:37 +0800 Subject: [PATCH 19/36] 8080911: sun/security/krb5/auto/UseCacheAndStoreKey.java timed out intermittently Reviewed-by: xuelei --- .../share/classes/sun/security/krb5/Config.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Config.java b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Config.java index f2f74ab5c67..395738095a7 100644 --- a/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Config.java +++ b/jdk/src/java.security.jgss/share/classes/sun/security/krb5/Config.java @@ -110,8 +110,10 @@ public class Config { * java.security.krb5.kdc not specified, error reading configuration file. */ - public static synchronized void refresh() throws KrbException { - singleton = new Config(); + public static void refresh() throws KrbException { + synchronized (Config.class) { + singleton = new Config(); + } KdcComm.initStatic(); EType.initStatic(); Checksum.initStatic(); From 60ea3cb98fcbc45e34607eaeb6b7cdc0a4b65d55 Mon Sep 17 00:00:00 2001 From: Alexander Stepanov Date: Tue, 26 May 2015 18:31:21 +0400 Subject: [PATCH 20/36] 8040147: minor cleanup for docs Minor cleanup for docs Reviewed-by: lancea --- .../share/classes/java/math/BigDecimal.java | 2 +- .../classes/java/text/AttributedString.java | 6 +- .../jdk/internal/util/xml/impl/Parser.java | 4 +- .../classes/com/sun/jndi/cosnaming/CNCtx.java | 6 +- .../com/sun/jndi/cosnaming/CorbanameUrl.java | 30 +- .../com/sun/jndi/cosnaming/IiopUrl.java | 9 +- .../sun/jndi/toolkit/corba/CorbaUtils.java | 3 +- .../com/sun/rowset/CachedRowSetImpl.java | 15 +- .../rowset/internal/CachedRowSetWriter.java | 2 +- .../java.sql/share/classes/java/sql/Blob.java | 281 ++++++++-------- .../java.sql/share/classes/java/sql/Clob.java | 307 +++++++++--------- .../classes/javax/transaction/xa/package.html | 2 +- .../classes/javax/transaction/package.html | 2 +- .../sun/tools/attach/AttachPermission.java | 4 +- .../com/sun/net/httpserver/HttpExchange.java | 6 +- .../sun/tools/jconsole/JConsoleContext.java | 1 - 16 files changed, 349 insertions(+), 331 deletions(-) diff --git a/jdk/src/java.base/share/classes/java/math/BigDecimal.java b/jdk/src/java.base/share/classes/java/math/BigDecimal.java index 2afd6e3b7a2..44d7a9f65f6 100644 --- a/jdk/src/java.base/share/classes/java/math/BigDecimal.java +++ b/jdk/src/java.base/share/classes/java/math/BigDecimal.java @@ -5176,7 +5176,7 @@ public class BigDecimal extends Number implements Comparable { } /* - * returns true if 128 bit number is less then + * returns true if 128 bit number is less than * hi0 & hi1 should be non-negative */ private static boolean longLongCompareMagnitude(long hi0, long lo0, long hi1, long lo1) { diff --git a/jdk/src/java.base/share/classes/java/text/AttributedString.java b/jdk/src/java.base/share/classes/java/text/AttributedString.java index daceb62a70f..6e89fdec599 100644 --- a/jdk/src/java.base/share/classes/java/text/AttributedString.java +++ b/jdk/src/java.base/share/classes/java/text/AttributedString.java @@ -332,7 +332,7 @@ public class AttributedString { * @param beginIndex Index of the first character of the range. * @param endIndex Index of the character following the last character of the range. * @exception NullPointerException if attribute is null. - * @exception IllegalArgumentException if beginIndex is less then 0, endIndex is + * @exception IllegalArgumentException if beginIndex is less than 0, endIndex is * greater than the length of the string, or beginIndex and endIndex together don't * define a non-empty subrange of the string. */ @@ -357,7 +357,7 @@ public class AttributedString { * @param endIndex Index of the character following the last * character of the range. * @exception NullPointerException if attributes is null. - * @exception IllegalArgumentException if beginIndex is less then + * @exception IllegalArgumentException if beginIndex is less than * 0, endIndex is greater than the length of the string, or * beginIndex and endIndex together don't define a non-empty * subrange of the string and the attributes parameter is not an @@ -580,7 +580,7 @@ public class AttributedString { * @param beginIndex the index of the first character * @param endIndex the index of the character following the last character * @return an iterator providing access to the text and its attributes - * @exception IllegalArgumentException if beginIndex is less then 0, + * @exception IllegalArgumentException if beginIndex is less than 0, * endIndex is greater than the length of the string, or beginIndex is * greater than endIndex. */ diff --git a/jdk/src/java.base/share/classes/jdk/internal/util/xml/impl/Parser.java b/jdk/src/java.base/share/classes/jdk/internal/util/xml/impl/Parser.java index 57115f2139d..eb2c5f7028e 100644 --- a/jdk/src/java.base/share/classes/jdk/internal/util/xml/impl/Parser.java +++ b/jdk/src/java.base/share/classes/jdk/internal/util/xml/impl/Parser.java @@ -162,8 +162,8 @@ public abstract class Parser { * Possible character type values are:
    - 0 for underscore ('_') or any * lower and upper case alphabetical character value;
    - 1 for colon * (':') character;
    - 2 for dash ('-') and dot ('.') or any decimal - * digit character value;
    - 3 for any kind of white space character
    An ASCII (7 bit) character which does not fall in any category listed + * digit character value;
    - 3 for any kind of white space character
    + * An ASCII (7 bit) character which does not fall in any category listed * above is mapped to 0xff. */ private static final byte nmttyp[]; diff --git a/jdk/src/java.corba/share/classes/com/sun/jndi/cosnaming/CNCtx.java b/jdk/src/java.corba/share/classes/com/sun/jndi/cosnaming/CNCtx.java index 6a4d3dea7da..3d77c3746b7 100644 --- a/jdk/src/java.corba/share/classes/com/sun/jndi/cosnaming/CNCtx.java +++ b/jdk/src/java.corba/share/classes/com/sun/jndi/cosnaming/CNCtx.java @@ -1040,7 +1040,7 @@ public class CNCtx implements javax.naming.Context { /** * Allow access to the name parser object. - * @param String JNDI name, is ignored since there is only one Name + * @param name JNDI name, is ignored since there is only one Name * Parser object. * @exception NamingException -- * @return NameParser object @@ -1051,7 +1051,7 @@ public class CNCtx implements javax.naming.Context { /** * Allow access to the name parser object. - * @param Name JNDI name, is ignored since there is only one Name + * @param name JNDI name, is ignored since there is only one Name * Parser object. * @exception NamingException -- * @return NameParser object @@ -1088,7 +1088,7 @@ public class CNCtx implements javax.naming.Context { * Record change but do not reinitialize ORB. * * @param propName The property name. - * @param propVal The ORB. + * @param propValue The ORB. * @return the previous value of this property if any. */ @SuppressWarnings("unchecked") diff --git a/jdk/src/java.corba/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java b/jdk/src/java.corba/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java index 6b32bb17aa0..a0cc08034f6 100644 --- a/jdk/src/java.corba/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java +++ b/jdk/src/java.corba/share/classes/com/sun/jndi/cosnaming/CorbanameUrl.java @@ -35,32 +35,36 @@ import com.sun.jndi.toolkit.url.UrlUtil; * Extract components of a "corbaname" URL. * * The format of an corbaname URL is defined in INS 99-12-03 as follows. - *

    + *

    {@code
      * corbaname url = "corbaname:"  ["#" ]
      * corbaloc_obj  =  ["/" ]
      * obj_addr_list = as defined in a corbaloc URL
      * key_string    = as defined in a corbaloc URL
      * string_name   = stringified COS name | empty_string
    - *

    - * Characters in are escaped as follows. + * }

    + * Characters in {@code } are escaped as follows. * US-ASCII alphanumeric characters are not escaped. Any characters outside * of this range are escaped except for the following: + *
    {@code
      *        ; / : ? @ & = + $ , - _ . ! ~ * ; ( )
    + * }
    * Escaped characters is escaped by using a % followed by its 2 hexadecimal * numbers representing the octet. - *

    + *

    * The corbaname URL is parsed into two parts: a corbaloc URL and a COS name. - * The corbaloc URL is constructed by concatenation "corbaloc:" with - * . - * The COS name is with the escaped characters resolved. - *

    + * The corbaloc URL is constructed by concatenation {@code "corbaloc:"} with + * {@code }. + * The COS name is {@code } with the escaped characters resolved. + *

    * A corbaname URL is resolved by: - *

      - *
    1. Construct a corbaloc URL by concatenating "corbaloc:" and . - *
    2. Resolve the corbaloc URL to a NamingContext by using + *
        + *
      1. Construct a corbaloc URL by concatenating {@code "corbaloc:"} and {@code }. + *
      2. Resolve the corbaloc URL to a NamingContext by using + *
        {@code
          *     nctx = ORB.string_to_object(corbalocUrl);
        - *
      3. Resolve in the NamingContext. - *
      + * } + *
    3. Resolve {@code } in the NamingContext. + *
    * * @author Rosanna Lee */ diff --git a/jdk/src/java.corba/share/classes/com/sun/jndi/cosnaming/IiopUrl.java b/jdk/src/java.corba/share/classes/com/sun/jndi/cosnaming/IiopUrl.java index d6ed5fd71fd..a51d6a4880c 100644 --- a/jdk/src/java.corba/share/classes/com/sun/jndi/cosnaming/IiopUrl.java +++ b/jdk/src/java.corba/share/classes/com/sun/jndi/cosnaming/IiopUrl.java @@ -38,6 +38,7 @@ import com.sun.jndi.toolkit.url.UrlUtil; * * The format of an iiopname URL is defined in INS 98-10-11 as follows: * + *
      * iiopname url = "iiopname://" [addr_list]["/" string_name]
      * addr_list    = [address ","]* address
      * address      = [version host [":" port]]
    @@ -46,19 +47,23 @@ import com.sun.jndi.toolkit.url.UrlUtil;
      * port         = number
      * major        = number
      * minor        = number
    - * string_name = stringified name | empty_string
    + * string_name  = stringified name | empty_string
    + * 
    * * The default port is 9999. The default version is "1.0" * US-ASCII alphanumeric characters are not escaped. Any characters outside * of this range are escaped except for the following: + *
    {@code
      * ; / : ? : @ & = + $ , - _ . ! ~ *  ' ( )
    + * }
    * Escaped characters is escaped by using a % followed by its 2 hexadecimal * numbers representing the octet. * * For backward compatibility, the "iiop" URL as defined in INS 97-6-6 * is also supported: - * + *
    {@code
      * iiop url     = "iiop://" [host [":" port]] ["/" string_name]
    + * }
    * The default port is 900. * * @author Rosanna Lee diff --git a/jdk/src/java.corba/share/classes/com/sun/jndi/toolkit/corba/CorbaUtils.java b/jdk/src/java.corba/share/classes/com/sun/jndi/toolkit/corba/CorbaUtils.java index 3802f5f106c..2fa43bca79e 100644 --- a/jdk/src/java.corba/share/classes/com/sun/jndi/toolkit/corba/CorbaUtils.java +++ b/jdk/src/java.corba/share/classes/com/sun/jndi/toolkit/corba/CorbaUtils.java @@ -56,7 +56,7 @@ public class CorbaUtils { * object by using the javax.rmi.CORBA package. *

    * This method effective does the following: - *

    +      * 
           * java.lang.Object stub;
           * try {
           *     stub = PortableRemoteObject.toStub(remoteObj);
    @@ -72,6 +72,7 @@ public class CorbaUtils {
           *     // ignore 'already connected' error
           * }
           * return (javax.rmi.CORBA.Stub)stub;
    +      * 
    * * @param remoteObj The non-null remote object for * @param orb The non-null ORB to connect the remote object to diff --git a/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/CachedRowSetImpl.java b/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/CachedRowSetImpl.java index 8fb0b5be9e2..a97a27244af 100644 --- a/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/CachedRowSetImpl.java +++ b/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/CachedRowSetImpl.java @@ -1059,7 +1059,7 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern * (acceptChanges) or population. This method may also be called * while performing updates to the insert row. *

    - * undoUpdateTINYINT, SMALLINT, INTEGER - * BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, CHAR, - * VARCHAR or LONGVARCHAR< value. The bold SQL type - * designates the recommended return type. + * column does not store an SQL {@code TINYINT, SMALLINT, INTEGER + * BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, NUMERIC, BIT, } + * {@code CHAR, VARCHAR} or + * {@code LONGVARCHAR} value. + * The bold SQL type designates the recommended return type. */ public String getString(String columnName) throws SQLException { return getString(getColIdxByName(columnName)); @@ -7748,7 +7749,7 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern * Updates the designated column with a RowId value. The updater * methods are used to update column values in the current row or the insert * row. The updater methods do not update the underlying database; instead - * the updateRow or insertRow methods are called + * the {@code updateRow} or {@code insertRow} methods are called * to update the database. * * @param columnIndex the first column is 1, the second 2, ... @@ -7764,7 +7765,7 @@ public class CachedRowSetImpl extends BaseRowSet implements RowSet, RowSetIntern * Updates the designated column with a RowId value. The updater * methods are used to update column values in the current row or the insert * row. The updater methods do not update the underlying database; instead - * the updateRow or insertRow methods are called + * the {@code updateRow} or {@code insertRow} methods are called * to update the database. * * @param columnName the name of the column diff --git a/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/internal/CachedRowSetWriter.java b/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/internal/CachedRowSetWriter.java index 79c3e78fc00..a3979499f28 100644 --- a/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/internal/CachedRowSetWriter.java +++ b/jdk/src/java.sql.rowset/share/classes/com/sun/rowset/internal/CachedRowSetWriter.java @@ -182,7 +182,7 @@ public class CachedRowSetWriter implements TransactionalWriter, Serializable { private CachedRowSetImpl crsResolve; /** - * This ArrayList will hold the values of SyncResolver.* + * This {@code ArrayList} will hold the values of SyncResolver.* */ private ArrayList status; diff --git a/jdk/src/java.sql/share/classes/java/sql/Blob.java b/jdk/src/java.sql/share/classes/java/sql/Blob.java index 090e89b6750..181dc96a6cf 100644 --- a/jdk/src/java.sql/share/classes/java/sql/Blob.java +++ b/jdk/src/java.sql/share/classes/java/sql/Blob.java @@ -29,29 +29,28 @@ import java.io.InputStream; /** * The representation (mapping) in - * the Java™ programming - * language of an SQL - * BLOB value. An SQL BLOB is a built-in type + * the Java™ programming language of an SQL + * {@code BLOB} value. An SQL {@code BLOB} is a built-in type * that stores a Binary Large Object as a column value in a row of - * a database table. By default drivers implement Blob using - * an SQL locator(BLOB), which means that a - * Blob object contains a logical pointer to the - * SQL BLOB data rather than the data itself. - * A Blob object is valid for the duration of the + * a database table. By default drivers implement {@code Blob} using + * an SQL {@code locator(BLOB)}, which means that a + * {@code Blob} object contains a logical pointer to the + * SQL {@code BLOB} data rather than the data itself. + * A {@code Blob} object is valid for the duration of the * transaction in which is was created. * *

    Methods in the interfaces {@link ResultSet}, * {@link CallableStatement}, and {@link PreparedStatement}, such as - * getBlob and setBlob allow a programmer to - * access an SQL BLOB value. - * The Blob interface provides methods for getting the - * length of an SQL BLOB (Binary Large Object) value, - * for materializing a BLOB value on the client, and for + * {@code getBlob} and {@code setBlob} allow a programmer to + * access an SQL {@code BLOB} value. + * The {@code Blob} interface provides methods for getting the + * length of an SQL {@code BLOB} (Binary Large Object) value, + * for materializing a {@code BLOB} value on the client, and for * determining the position of a pattern of bytes within a - * BLOB value. In addition, this interface has methods for updating - * a BLOB value. + * {@code BLOB} value. In addition, this interface has methods for updating + * a {@code BLOB} value. *

    - * All methods on the Blob interface must be fully implemented if the + * All methods on the {@code Blob} interface must be fully implemented if the * JDBC driver supports the data type. * * @since 1.2 @@ -60,51 +59,52 @@ import java.io.InputStream; public interface Blob { /** - * Returns the number of bytes in the BLOB value - * designated by this Blob object. - * @return length of the BLOB in bytes + * Returns the number of bytes in the {@code BLOB} value + * designated by this {@code Blob} object. + * + * @return length of the {@code BLOB} in bytes * @exception SQLException if there is an error accessing the - * length of the BLOB - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * length of the {@code BLOB} + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.2 */ long length() throws SQLException; /** - * Retrieves all or part of the BLOB - * value that this Blob object represents, as an array of - * bytes. This byte array contains up to length - * consecutive bytes starting at position pos. + * Retrieves all or part of the {@code BLOB} + * value that this {@code Blob} object represents, as an array of + * bytes. This {@code byte} array contains up to {@code length} + * consecutive bytes starting at position {@code pos}. * * @param pos the ordinal position of the first byte in the - * BLOB value to be extracted; the first byte is at + * {@code BLOB} value to be extracted; the first byte is at * position 1 * @param length the number of consecutive bytes to be copied; the value - * for length must be 0 or greater - * @return a byte array containing up to length - * consecutive bytes from the BLOB value designated - * by this Blob object, starting with the - * byte at position pos + * for length must be 0 or greater + * @return a byte array containing up to {@code length} + * consecutive bytes from the {@code BLOB} value designated + * by this {@code Blob} object, starting with the + * byte at position {@code pos} * @exception SQLException if there is an error accessing the - * BLOB value; if pos is less than 1 or length is - * less than 0 - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code BLOB} value; if pos is less than 1 or length is + * less than 0 + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @see #setBytes * @since 1.2 */ byte[] getBytes(long pos, int length) throws SQLException; /** - * Retrieves the BLOB value designated by this - * Blob instance as a stream. + * Retrieves the {@code BLOB} value designated by this + * {@code Blob} instance as a stream. * - * @return a stream containing the BLOB data + * @return a stream containing the {@code BLOB} data * @exception SQLException if there is an error accessing the - * BLOB value - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code BLOB} value + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @see #setBinaryStream * @since 1.2 */ @@ -112,38 +112,38 @@ public interface Blob { /** * Retrieves the byte position at which the specified byte array - * pattern begins within the BLOB - * value that this Blob object represents. The - * search for pattern begins at position - * start. + * {@code pattern} begins within the {@code BLOB} + * value that this {@code Blob} object represents. + * The search for {@code pattern} begins at position + * {@code start}. * * @param pattern the byte array for which to search * @param start the position at which to begin searching; the * first position is 1 * @return the position at which the pattern appears, else -1 * @exception SQLException if there is an error accessing the - * BLOB or if start is less than 1 - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code BLOB} or if start is less than 1 + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.2 */ long position(byte pattern[], long start) throws SQLException; /** - * Retrieves the byte position in the BLOB value - * designated by this Blob object at which - * pattern begins. The search begins at position - * start. + * Retrieves the byte position in the {@code BLOB} value + * designated by this {@code Blob} object at which + * {@code pattern} begins. The search begins at position + * {@code start}. * - * @param pattern the Blob object designating - * the BLOB value for which to search - * @param start the position in the BLOB value + * @param pattern the {@code Blob} object designating + * the {@code BLOB} value for which to search + * @param start the position in the {@code BLOB} value * at which to begin searching; the first position is 1 * @return the position at which the pattern begins, else -1 * @exception SQLException if there is an error accessing the - * BLOB value or if start is less than 1 - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code BLOB} value or if start is less than 1 + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.2 */ long position(Blob pattern, long start) throws SQLException; @@ -151,152 +151,155 @@ public interface Blob { // -------------------------- JDBC 3.0 ----------------------------------- /** - * Writes the given array of bytes to the BLOB value that - * this Blob object represents, starting at position - * pos, and returns the number of bytes written. + * Writes the given array of bytes to the {@code BLOB} value that + * this {@code Blob} object represents, starting at position + * {@code pos}, and returns the number of bytes written. * The array of bytes will overwrite the existing bytes - * in the Blob object starting at the position - * pos. If the end of the Blob value is reached - * while writing the array of bytes, then the length of the Blob + * in the {@code Blob} object starting at the position + * {@code pos}. If the end of the {@code Blob} value is reached + * while writing the array of bytes, then the length of the {@code Blob} * value will be increased to accommodate the extra bytes. *

    - * Note: If the value specified for pos - * is greater then the length+1 of the BLOB value then the - * behavior is undefined. Some JDBC drivers may throw a - * SQLException while other drivers may support this + * Note: If the value specified for {@code pos} + * is greater than the length+1 of the {@code BLOB} value then the + * behavior is undefined. Some JDBC drivers may throw an + * {@code SQLException} while other drivers may support this * operation. * - * @param pos the position in the BLOB object at which + * @param pos the position in the {@code BLOB} object at which * to start writing; the first position is 1 - * @param bytes the array of bytes to be written to the BLOB - * value that this Blob object represents + * @param bytes the array of bytes to be written to the {@code BLOB} + * value that this {@code Blob} object represents * @return the number of bytes written * @exception SQLException if there is an error accessing the - * BLOB value or if pos is less than 1 - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code BLOB} value or if pos is less than 1 + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @see #getBytes * @since 1.4 */ int setBytes(long pos, byte[] bytes) throws SQLException; /** - * Writes all or part of the given byte array to the - * BLOB value that this Blob object represents + * Writes all or part of the given {@code byte} array to the + * {@code BLOB} value that this {@code Blob} object represents * and returns the number of bytes written. - * Writing starts at position pos in the BLOB - * value; len bytes from the given byte array are written. + * Writing starts at position {@code pos} in the {@code BLOB} + * value; {@code len} bytes from the given byte array are written. * The array of bytes will overwrite the existing bytes - * in the Blob object starting at the position - * pos. If the end of the Blob value is reached - * while writing the array of bytes, then the length of the Blob + * in the {@code Blob} object starting at the position + * {@code pos}. If the end of the {@code Blob} value is reached + * while writing the array of bytes, then the length of the {@code Blob} * value will be increased to accommodate the extra bytes. *

    - * Note: If the value specified for pos - * is greater then the length+1 of the BLOB value then the - * behavior is undefined. Some JDBC drivers may throw a - * SQLException while other drivers may support this + * Note: If the value specified for {@code pos} + * is greater than the length+1 of the {@code BLOB} value then the + * behavior is undefined. Some JDBC drivers may throw an + * {@code SQLException} while other drivers may support this * operation. * - * @param pos the position in the BLOB object at which + * @param pos the position in the {@code BLOB} object at which * to start writing; the first position is 1 - * @param bytes the array of bytes to be written to this BLOB + * @param bytes the array of bytes to be written to this {@code BLOB} * object - * @param offset the offset into the array bytes at which + * @param offset the offset into the array {@code bytes} at which * to start reading the bytes to be set - * @param len the number of bytes to be written to the BLOB - * value from the array of bytes bytes + * @param len the number of bytes to be written to the {@code BLOB} + * value from the array of bytes {@code bytes} * @return the number of bytes written * @exception SQLException if there is an error accessing the - * BLOB value or if pos is less than 1 - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code BLOB} value or if pos is less than 1 + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @see #getBytes * @since 1.4 */ int setBytes(long pos, byte[] bytes, int offset, int len) throws SQLException; /** - * Retrieves a stream that can be used to write to the BLOB - * value that this Blob object represents. The stream begins - * at position pos. + * Retrieves a stream that can be used to write to the {@code BLOB} + * value that this {@code Blob} object represents. The stream begins + * at position {@code pos}. * The bytes written to the stream will overwrite the existing bytes - * in the Blob object starting at the position - * pos. If the end of the Blob value is reached - * while writing to the stream, then the length of the Blob + * in the {@code Blob} object starting at the position + * {@code pos}. If the end of the {@code Blob} value is reached + * while writing to the stream, then the length of the {@code Blob} * value will be increased to accommodate the extra bytes. *

    - * Note: If the value specified for pos - * is greater then the length+1 of the BLOB value then the - * behavior is undefined. Some JDBC drivers may throw a - * SQLException while other drivers may support this + * Note: If the value specified for {@code pos} + * is greater than the length+1 of the {@code BLOB} value then the + * behavior is undefined. Some JDBC drivers may throw an + * {@code SQLException} while other drivers may support this * operation. * - * @param pos the position in the BLOB value at which + * @param pos the position in the {@code BLOB} value at which * to start writing; the first position is 1 - * @return a java.io.OutputStream object to which data can + * @return a {@code java.io.OutputStream} object to which data can * be written * @exception SQLException if there is an error accessing the - * BLOB value or if pos is less than 1 - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code BLOB} value or if pos is less than 1 + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @see #getBinaryStream * @since 1.4 */ java.io.OutputStream setBinaryStream(long pos) throws SQLException; /** - * Truncates the BLOB value that this Blob - * object represents to be len bytes in length. + * Truncates the {@code BLOB} value that this {@code Blob} + * object represents to be {@code len} bytes in length. *

    - * Note: If the value specified for pos - * is greater then the length+1 of the BLOB value then the - * behavior is undefined. Some JDBC drivers may throw a - * SQLException while other drivers may support this + * Note: If the value specified for {@code pos} + * is greater than the length+1 of the {@code BLOB} value then the + * behavior is undefined. Some JDBC drivers may throw an + * {@code SQLException} while other drivers may support this * operation. * - * @param len the length, in bytes, to which the BLOB value - * that this Blob object represents should be truncated + * @param len the length, in bytes, to which the {@code BLOB} value + * that this {@code Blob} object represents should be truncated * @exception SQLException if there is an error accessing the - * BLOB value or if len is less than 0 - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code BLOB} value or if len is less than 0 + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.4 */ void truncate(long len) throws SQLException; /** - * This method frees the Blob object and releases the resources that - * it holds. The object is invalid once the free + * This method frees the {@code Blob} object and releases the resources that + * it holds. The object is invalid once the {@code free} * method is called. *

    - * After free has been called, any attempt to invoke a - * method other than free will result in a SQLException - * being thrown. If free is called multiple times, the subsequent - * calls to free are treated as a no-op. + * After {@code free} has been called, any attempt to invoke a + * method other than {@code free} will result in an {@code SQLException} + * being thrown. If {@code free} is called multiple times, the subsequent + * calls to {@code free} are treated as a no-op. * * @throws SQLException if an error occurs releasing - * the Blob's resources - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * the Blob's resources + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.6 */ void free() throws SQLException; /** - * Returns an InputStream object that contains a partial Blob value, - * starting with the byte specified by pos, which is length bytes in length. + * Returns an {@code InputStream} object that contains + * a partial {@code Blob} value, starting with the byte + * specified by pos, which is length bytes in length. * - * @param pos the offset to the first byte of the partial value to be retrieved. - * The first byte in the Blob is at position 1 + * @param pos the offset to the first byte of the partial value to be + * retrieved. The first byte in the {@code Blob} is at position 1. * @param length the length in bytes of the partial value to be retrieved - * @return InputStream through which the partial Blob value can be read. - * @throws SQLException if pos is less than 1 or if pos is greater than the number of bytes - * in the Blob or if pos + length is greater than the number of bytes - * in the Blob + * @return {@code InputStream} through which + * the partial {@code Blob} value can be read. + * @throws SQLException if pos is less than 1 or if pos is greater + * than the number of bytes in the {@code Blob} or if + * pos + length is greater than the number of bytes + * in the {@code Blob} * - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.6 */ InputStream getBinaryStream(long pos, long length) throws SQLException; diff --git a/jdk/src/java.sql/share/classes/java/sql/Clob.java b/jdk/src/java.sql/share/classes/java/sql/Clob.java index b074ac604c0..3c4bfda793a 100644 --- a/jdk/src/java.sql/share/classes/java/sql/Clob.java +++ b/jdk/src/java.sql/share/classes/java/sql/Clob.java @@ -29,28 +29,28 @@ import java.io.Reader; /** * The mapping in the Java™ programming language - * for the SQL CLOB type. - * An SQL CLOB is a built-in type + * for the SQL {@code CLOB} type. + * An SQL {@code CLOB} is a built-in type * that stores a Character Large Object as a column value in a row of * a database table. - * By default drivers implement a Clob object using an SQL - * locator(CLOB), which means that a Clob object - * contains a logical pointer to the SQL CLOB data rather than - * the data itself. A Clob object is valid for the duration + * By default drivers implement a {@code Clob} object using an SQL + * {@code locator(CLOB)}, which means that a {@code Clob} object + * contains a logical pointer to the SQL {@code CLOB} data rather than + * the data itself. A {@code Clob} object is valid for the duration * of the transaction in which it was created. - *

    The Clob interface provides methods for getting the - * length of an SQL CLOB (Character Large Object) value, - * for materializing a CLOB value on the client, and for - * searching for a substring or CLOB object within a - * CLOB value. + *

    The {@code Clob} interface provides methods for getting the + * length of an SQL {@code CLOB} (Character Large Object) value, + * for materializing a {@code CLOB} value on the client, and for + * searching for a substring or {@code CLOB} object within a + * {@code CLOB} value. * Methods in the interfaces {@link ResultSet}, * {@link CallableStatement}, and {@link PreparedStatement}, such as - * getClob and setClob allow a programmer to - * access an SQL CLOB value. In addition, this interface - * has methods for updating a CLOB value. + * {@code getClob} and {@code setClob} allow a programmer to + * access an SQL {@code CLOB} value. In addition, this interface + * has methods for updating a {@code CLOB} value. *

    - * All methods on the Clob interface must be fully implemented if the - * JDBC driver supports the data type. + * All methods on the {@code Clob} interface must be + * fully implemented if the JDBC driver supports the data type. * * @since 1.2 */ @@ -59,67 +59,67 @@ public interface Clob { /** * Retrieves the number of characters - * in the CLOB value - * designated by this Clob object. + * in the {@code CLOB} value + * designated by this {@code Clob} object. * - * @return length of the CLOB in characters + * @return length of the {@code CLOB} in characters * @exception SQLException if there is an error accessing the - * length of the CLOB value - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * length of the {@code CLOB} value + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.2 */ long length() throws SQLException; /** * Retrieves a copy of the specified substring - * in the CLOB value - * designated by this Clob object. + * in the {@code CLOB} value + * designated by this {@code Clob} object. * The substring begins at position - * pos and has up to length consecutive + * {@code pos} and has up to {@code length} consecutive * characters. * * @param pos the first character of the substring to be extracted. - * The first character is at position 1. + * The first character is at position 1. * @param length the number of consecutive characters to be copied; - * the value for length must be 0 or greater - * @return a String that is the specified substring in - * the CLOB value designated by this Clob object + * the value for length must be 0 or greater + * @return a {@code String} that is the specified substring in + * the {@code CLOB} value designated by this {@code Clob} object * @exception SQLException if there is an error accessing the - * CLOB value; if pos is less than 1 or length is - * less than 0 - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code CLOB} value; if pos is less than 1 or length is + * less than 0 + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.2 */ String getSubString(long pos, int length) throws SQLException; /** - * Retrieves the CLOB value designated by this Clob - * object as a java.io.Reader object (or as a stream of + * Retrieves the {@code CLOB} value designated by this {@code Clob} + * object as a {@code java.io.Reader} object (or as a stream of * characters). * - * @return a java.io.Reader object containing the - * CLOB data + * @return a {@code java.io.Reader} object containing the + * {@code CLOB} data * @exception SQLException if there is an error accessing the - * CLOB value - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code CLOB} value + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @see #setCharacterStream * @since 1.2 */ java.io.Reader getCharacterStream() throws SQLException; /** - * Retrieves the CLOB value designated by this Clob + * Retrieves the {@code CLOB} value designated by this {@code Clob} * object as an ascii stream. * - * @return a java.io.InputStream object containing the - * CLOB data + * @return a {@code java.io.InputStream} object containing the + * {@code CLOB} data * @exception SQLException if there is an error accessing the - * CLOB value - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code CLOB} value + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @see #setAsciiStream * @since 1.2 */ @@ -127,38 +127,38 @@ public interface Clob { /** * Retrieves the character position at which the specified substring - * searchstr appears in the SQL CLOB value - * represented by this Clob object. The search - * begins at position start. + * {@code searchstr} appears in the SQL {@code CLOB} value + * represented by this {@code Clob} object. The search + * begins at position {@code start}. * * @param searchstr the substring for which to search - * @param start the position at which to begin searching; the first position - * is 1 + * @param start the position at which to begin searching; + * the first position is 1 * @return the position at which the substring appears or -1 if it is not * present; the first position is 1 * @exception SQLException if there is an error accessing the - * CLOB value or if pos is less than 1 - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code CLOB} value or if pos is less than 1 + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.2 */ long position(String searchstr, long start) throws SQLException; /** * Retrieves the character position at which the specified - * Clob object searchstr appears in this - * Clob object. The search begins at position - * start. + * {@code Clob} object {@code searchstr} appears in this + * {@code Clob} object. The search begins at position + * {@code start}. * - * @param searchstr the Clob object for which to search + * @param searchstr the {@code Clob} object for which to search * @param start the position at which to begin searching; the first * position is 1 - * @return the position at which the Clob object appears - * or -1 if it is not present; the first position is 1 + * @return the position at which the {@code Clob} object appears + * or -1 if it is not present; the first position is 1 * @exception SQLException if there is an error accessing the - * CLOB value or if start is less than 1 - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code CLOB} value or if start is less than 1 + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.2 */ long position(Clob searchstr, long start) throws SQLException; @@ -166,90 +166,91 @@ public interface Clob { //---------------------------- jdbc 3.0 ----------------------------------- /** - * Writes the given Java String to the CLOB - * value that this Clob object designates at the position - * pos. The string will overwrite the existing characters - * in the Clob object starting at the position - * pos. If the end of the Clob value is reached - * while writing the given string, then the length of the Clob + * Writes the given Java {@code String} to the {@code CLOB} + * value that this {@code Clob} object designates at the position + * {@code pos}. The string will overwrite the existing characters + * in the {@code Clob} object starting at the position + * {@code pos}. If the end of the {@code Clob} value is reached + * while writing the given string, then the length of the {@code Clob} * value will be increased to accommodate the extra characters. *

    - * Note: If the value specified for pos - * is greater then the length+1 of the CLOB value then the - * behavior is undefined. Some JDBC drivers may throw a - * SQLException while other drivers may support this + * Note: If the value specified for {@code pos} + * is greater than the length+1 of the {@code CLOB} value then the + * behavior is undefined. Some JDBC drivers may throw an + * {@code SQLException} while other drivers may support this * operation. * - * @param pos the position at which to start writing to the CLOB - * value that this Clob object represents; - * The first position is 1 - * @param str the string to be written to the CLOB - * value that this Clob designates + * @param pos the position at which to start writing to the {@code CLOB} + * value that this {@code Clob} object represents; + * the first position is 1. + * @param str the string to be written to the {@code CLOB} + * value that this {@code Clob} designates * @return the number of characters written * @exception SQLException if there is an error accessing the - * CLOB value or if pos is less than 1 + * {@code CLOB} value or if pos is less than 1 * - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.4 */ int setString(long pos, String str) throws SQLException; /** - * Writes len characters of str, starting - * at character offset, to the CLOB value - * that this Clob represents. The string will overwrite the existing characters - * in the Clob object starting at the position - * pos. If the end of the Clob value is reached - * while writing the given string, then the length of the Clob + * Writes {@code len} characters of {@code str}, starting + * at character {@code offset}, to the {@code CLOB} value + * that this {@code Clob} represents. + * The string will overwrite the existing characters + * in the {@code Clob} object starting at the position + * {@code pos}. If the end of the {@code Clob} value is reached + * while writing the given string, then the length of the {@code Clob} * value will be increased to accommodate the extra characters. *

    - * Note: If the value specified for pos - * is greater then the length+1 of the CLOB value then the - * behavior is undefined. Some JDBC drivers may throw a - * SQLException while other drivers may support this + * Note: If the value specified for {@code pos} + * is greater than the length+1 of the {@code CLOB} value then the + * behavior is undefined. Some JDBC drivers may throw an + * {@code SQLException} while other drivers may support this * operation. * * @param pos the position at which to start writing to this - * CLOB object; The first position is 1 - * @param str the string to be written to the CLOB - * value that this Clob object represents - * @param offset the offset into str to start reading + * {@code CLOB} object; The first position is 1 + * @param str the string to be written to the {@code CLOB} + * value that this {@code Clob} object represents + * @param offset the offset into {@code str} to start reading * the characters to be written * @param len the number of characters to be written * @return the number of characters written * @exception SQLException if there is an error accessing the - * CLOB value or if pos is less than 1 + * {@code CLOB} value or if pos is less than 1 * - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.4 */ int setString(long pos, String str, int offset, int len) throws SQLException; /** * Retrieves a stream to be used to write Ascii characters to the - * CLOB value that this Clob object represents, - * starting at position pos. Characters written to the stream + * {@code CLOB} value that this {@code Clob} object represents, + * starting at position {@code pos}. Characters written to the stream * will overwrite the existing characters - * in the Clob object starting at the position - * pos. If the end of the Clob value is reached - * while writing characters to the stream, then the length of the Clob + * in the {@code Clob} object starting at the position + * {@code pos}. If the end of the {@code Clob} value is reached + * while writing characters to the stream, then the length of the {@code Clob} * value will be increased to accommodate the extra characters. *

    - * Note: If the value specified for pos - * is greater then the length+1 of the CLOB value then the - * behavior is undefined. Some JDBC drivers may throw a - * SQLException while other drivers may support this + * Note: If the value specified for {@code pos} + * is greater than the length+1 of the {@code CLOB} value then the + * behavior is undefined. Some JDBC drivers may throw an + * {@code SQLException} while other drivers may support this * operation. * * @param pos the position at which to start writing to this - * CLOB object; The first position is 1 + * {@code CLOB} object; The first position is 1 * @return the stream to which ASCII encoded characters can be written * @exception SQLException if there is an error accessing the - * CLOB value or if pos is less than 1 - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code CLOB} value or if pos is less than 1 + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @see #getAsciiStream * * @since 1.4 @@ -258,28 +259,28 @@ public interface Clob { /** * Retrieves a stream to be used to write a stream of Unicode characters - * to the CLOB value that this Clob object - * represents, at position pos. Characters written to the stream + * to the {@code CLOB} value that this {@code Clob} object + * represents, at position {@code pos}. Characters written to the stream * will overwrite the existing characters - * in the Clob object starting at the position - * pos. If the end of the Clob value is reached - * while writing characters to the stream, then the length of the Clob + * in the {@code Clob} object starting at the position + * {@code pos}. If the end of the {@code Clob} value is reached + * while writing characters to the stream, then the length of the {@code Clob} * value will be increased to accommodate the extra characters. *

    - * Note: If the value specified for pos - * is greater then the length+1 of the CLOB value then the - * behavior is undefined. Some JDBC drivers may throw a - * SQLException while other drivers may support this + * Note: If the value specified for {@code pos} + * is greater than the length+1 of the {@code CLOB} value then the + * behavior is undefined. Some JDBC drivers may throw an + * {@code SQLException} while other drivers may support this * operation. * * @param pos the position at which to start writing to the - * CLOB value; The first position is 1 + * {@code CLOB} value; The first position is 1 * * @return a stream to which Unicode encoded characters can be written * @exception SQLException if there is an error accessing the - * CLOB value or if pos is less than 1 - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * {@code CLOB} value or if pos is less than 1 + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @see #getCharacterStream * * @since 1.4 @@ -287,60 +288,64 @@ public interface Clob { java.io.Writer setCharacterStream(long pos) throws SQLException; /** - * Truncates the CLOB value that this Clob - * designates to have a length of len + * Truncates the {@code CLOB} value that this {@code Clob} + * designates to have a length of {@code len} * characters. *

    - * Note: If the value specified for pos - * is greater then the length+1 of the CLOB value then the - * behavior is undefined. Some JDBC drivers may throw a - * SQLException while other drivers may support this + * Note: If the value specified for {@code pos} + * is greater than the length+1 of the {@code CLOB} value then the + * behavior is undefined. Some JDBC drivers may throw an + * {@code SQLException} while other drivers may support this * operation. * - * @param len the length, in characters, to which the CLOB value + * @param len the length, in characters, to which the {@code CLOB} value * should be truncated * @exception SQLException if there is an error accessing the - * CLOB value or if len is less than 0 + * {@code CLOB} value or if len is less than 0 * - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.4 */ void truncate(long len) throws SQLException; /** - * This method releases the resources that the Clob object - * holds. The object is invalid once the free method + * This method releases the resources that the {@code Clob} object + * holds. The object is invalid once the {@code free} method * is called. *

    - * After free has been called, any attempt to invoke a - * method other than free will result in a SQLException - * being thrown. If free is called multiple times, the subsequent - * calls to free are treated as a no-op. + * After {@code free} has been called, any attempt to invoke a + * method other than {@code free} will result in a {@code SQLException} + * being thrown. If {@code free} is called multiple times, the subsequent + * calls to {@code free} are treated as a no-op. * * @throws SQLException if an error occurs releasing - * the Clob's resources + * the Clob's resources * - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.6 */ void free() throws SQLException; /** - * Returns a Reader object that contains a partial Clob value, starting - * with the character specified by pos, which is length characters in length. + * Returns a {@code Reader} object that contains + * a partial {@code Clob} value, starting with the character + * specified by pos, which is length characters in length. * * @param pos the offset to the first character of the partial value to * be retrieved. The first character in the Clob is at position 1. * @param length the length in characters of the partial value to be retrieved. - * @return Reader through which the partial Clob value can be read. - * @throws SQLException if pos is less than 1 or if pos is greater than the number of - * characters in the Clob or if pos + length is greater than the number of - * characters in the Clob + * @return {@code Reader} through which + * the partial {@code Clob} value can be read. + * @throws SQLException if pos is less than 1; + * or if pos is greater than the number of characters + * in the {@code Clob}; + * or if pos + length is greater than the number of + * characters in the {@code Clob} * - * @exception SQLFeatureNotSupportedException if the JDBC driver does not support - * this method + * @exception SQLFeatureNotSupportedException if the JDBC driver + * does not support this method * @since 1.6 */ Reader getCharacterStream(long pos, long length) throws SQLException; diff --git a/jdk/src/java.sql/share/classes/javax/transaction/xa/package.html b/jdk/src/java.sql/share/classes/javax/transaction/xa/package.html index daa9e6807ca..0d74a973014 100644 --- a/jdk/src/java.sql/share/classes/javax/transaction/xa/package.html +++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/package.html @@ -35,7 +35,7 @@ manager to enlist and delist resource objects (supplied by the resource manager driver) in JTA transactions. The driver vendor for a specific resource manager provides the implementation of this API. -

    + @since 1.4 diff --git a/jdk/src/java.transaction/share/classes/javax/transaction/package.html b/jdk/src/java.transaction/share/classes/javax/transaction/package.html index 7f71b1791c8..77591c037c9 100644 --- a/jdk/src/java.transaction/share/classes/javax/transaction/package.html +++ b/jdk/src/java.transaction/share/classes/javax/transaction/package.html @@ -30,7 +30,7 @@ questions. Contains three exceptions thrown by the ORB machinery during unmarshalling. -

    + @since 1.3 diff --git a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AttachPermission.java b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AttachPermission.java index 51e198bc3cf..0f573e8dff4 100644 --- a/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AttachPermission.java +++ b/jdk/src/jdk.attach/share/classes/com/sun/tools/attach/AttachPermission.java @@ -31,7 +31,7 @@ package com.sun.tools.attach; * VirtualMachine#attach VirtalMachine.attach} to attach to a target virtual * machine. * This permission is also checked when an {@link - * com.sun.tools.attach.spi.AttachProvider AttachProvider} is created.

    + * com.sun.tools.attach.spi.AttachProvider AttachProvider} is created. * *

    An AttachPermission object contains a name (also referred * to as a "target name") but no actions list; you either have the @@ -39,7 +39,7 @@ package com.sun.tools.attach; * The following table provides a summary description of what the * permission allows, and discusses the risks of granting code the * permission. - *

    + * * * diff --git a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpExchange.java b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpExchange.java index 757f067451b..0cf3623cf3d 100644 --- a/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpExchange.java +++ b/jdk/src/jdk.httpserver/share/classes/com/sun/net/httpserver/HttpExchange.java @@ -173,12 +173,12 @@ public abstract class HttpExchange { *

    * This method must be called prior to calling {@link #getResponseBody()}. * @param rCode the response code to send - * @param responseLength if > 0, specifies a fixed response body length - * and that exact number of bytes must be written + * @param responseLength if {@literal > 0}, specifies a fixed response + * body length and that exact number of bytes must be written * to the stream acquired from getResponseBody(), or else * if equal to 0, then chunked encoding is used, * and an arbitrary number of bytes may be written. - * if <= -1, then no response body length is specified and + * if {@literal <= -1}, then no response body length is specified and * no response body may be written. * @see HttpExchange#getResponseBody() */ diff --git a/jdk/src/jdk.jconsole/share/classes/com/sun/tools/jconsole/JConsoleContext.java b/jdk/src/jdk.jconsole/share/classes/com/sun/tools/jconsole/JConsoleContext.java index 4eda258af17..fd941b87fea 100644 --- a/jdk/src/jdk.jconsole/share/classes/com/sun/tools/jconsole/JConsoleContext.java +++ b/jdk/src/jdk.jconsole/share/classes/com/sun/tools/jconsole/JConsoleContext.java @@ -39,7 +39,6 @@ import javax.swing.event.SwingPropertyChangeSupport; * {@link ConnectionState#DISCONNECTED DISCONNECTED}. * The {@code JConsoleContext} instance will be the source for * any generated events. - *

    * * @since 1.6 */ From 91b74f4fdc8a578bb41fdc08531f0d407586d797 Mon Sep 17 00:00:00 2001 From: Artem Smotrakov Date: Tue, 26 May 2015 18:42:08 +0300 Subject: [PATCH 21/36] 8078823: javax/net/ssl/ciphersuites/DisabledAlgorithms.java fails intermittently Reviewed-by: xuelei --- .../net/ssl/ciphersuites/DisabledAlgorithms.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/jdk/test/javax/net/ssl/ciphersuites/DisabledAlgorithms.java b/jdk/test/javax/net/ssl/ciphersuites/DisabledAlgorithms.java index 97cedaeaa59..f1fd67d9b38 100644 --- a/jdk/test/javax/net/ssl/ciphersuites/DisabledAlgorithms.java +++ b/jdk/test/javax/net/ssl/ciphersuites/DisabledAlgorithms.java @@ -103,6 +103,8 @@ public class DisabledAlgorithms { default: throw new RuntimeException("Wrong parameter: " + args[0]); } + + System.out.println("Test passed"); } /* @@ -127,7 +129,6 @@ public class DisabledAlgorithms { } } - server.stop(); while (server.isRunning()) { sleep(); } @@ -223,11 +224,19 @@ public class DisabledAlgorithms { } catch (SSLHandshakeException e) { System.out.println("Server: run: " + e); sslError = true; + stopped = true; } catch (IOException e) { if (!stopped) { - System.out.println("Server: run: " + e); + System.out.println("Server: run: unexpected exception: " + + e); e.printStackTrace(); otherError = true; + stopped = true; + } else { + System.out.println("Server: run: " + e); + System.out.println("The exception above occurred " + + "because socket was closed, " + + "please ignore it"); } } } @@ -260,6 +269,7 @@ public class DisabledAlgorithms { stopped = true; if (!ssocket.isClosed()) { try { + System.out.println("Server: close socket"); ssocket.close(); } catch (IOException e) { System.out.println("Server: close: " + e); From 92bfe45d6a39525817144ad6e875d60033b43649 Mon Sep 17 00:00:00 2001 From: Xueming Shen Date: Tue, 26 May 2015 12:34:51 -0700 Subject: [PATCH 22/36] 8060161: re-examine sun/nio/cs/Test4200310.sh, test is invalid for modular image To remove the invalid test case Reviewed-by: alanb --- jdk/test/sun/nio/cs/Test4200310.sh | 41 ------------------------------ 1 file changed, 41 deletions(-) delete mode 100644 jdk/test/sun/nio/cs/Test4200310.sh diff --git a/jdk/test/sun/nio/cs/Test4200310.sh b/jdk/test/sun/nio/cs/Test4200310.sh deleted file mode 100644 index ff9a45f5deb..00000000000 --- a/jdk/test/sun/nio/cs/Test4200310.sh +++ /dev/null @@ -1,41 +0,0 @@ -# -# Copyright (c) 2008, 2010, 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 4200310 -# @summary make sure class files are not duplicated between rt.jar, -# charsets.jar, and localedata.jar -# @author Norbert Lindenberg -# @run shell Test4200310.sh - -2>&1 $TESTJAVA/bin/jar -tf "$TESTJAVA/jre/lib/rt.jar" > class-list -2>&1 $TESTJAVA/bin/jar -tf "$TESTJAVA/jre/lib/charsets.jar" >> class-list -2>&1 $TESTJAVA/bin/jar -tf "$TESTJAVA/jre/lib/ext/localedata.jar" >> class-list -duplicates=`grep '\.class$' class-list | sort | uniq -d` - -rm -f class-list -if [ "$duplicates" != "" ]; then - echo FAILED: $duplicates are duplicated between rt.jar, charsets.jar, and localedata.jar - exit 1 -fi - -exit 0 From 03c24ff25bf677051ee4943e3f4dfdbaaf383940 Mon Sep 17 00:00:00 2001 From: Mark Sheppard Date: Wed, 27 May 2015 13:04:32 +0100 Subject: [PATCH 23/36] 8041677: java/net/MulticastSocket/TestInterfaces failed on Oracle VM Virtual Ethernet Adapter Ignore Teredo interface in test Reviewed-by: alanb, chegar --- jdk/test/java/net/MulticastSocket/TestInterfaces.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/jdk/test/java/net/MulticastSocket/TestInterfaces.java b/jdk/test/java/net/MulticastSocket/TestInterfaces.java index 958e77eb0b4..b9b641d40cc 100644 --- a/jdk/test/java/net/MulticastSocket/TestInterfaces.java +++ b/jdk/test/java/net/MulticastSocket/TestInterfaces.java @@ -46,6 +46,11 @@ public class TestInterfaces { while (nifs.hasMoreElements()) { NetworkInterface ni = (NetworkInterface)nifs.nextElement(); + // JDK-8022963, Skip (Windows) Teredo Tunneling Pseudo-Interface + String dName = ni.getDisplayName(); + if (isWindows && dName != null && dName.contains("Teredo")) + continue; + /* * Test MulticastSocket.getInterface */ @@ -92,10 +97,6 @@ public class TestInterfaces { continue; } - // JDK-8022963, Skip (Windows) Teredo Tunneling Pseudo-Interface - String dName = ni.getDisplayName(); - if (isWindows && dName != null && dName.contains("Teredo")) - continue; NetworkInterface curr = soc.getNetworkInterface(); if (!curr.equals(ni)) { From 48a0b96187855561c0782966b3ccaec8afb5a8d4 Mon Sep 17 00:00:00 2001 From: Mark Sheppard Date: Wed, 27 May 2015 13:23:40 +0100 Subject: [PATCH 24/36] 8077377: java/net/MulticastSocket/SetOutgoingIf.java fails intermittently with NullPointerException Ignore "stray" packets received from non test interface Reviewed-by: alanb, chegar --- jdk/test/java/net/MulticastSocket/SetOutgoingIf.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/jdk/test/java/net/MulticastSocket/SetOutgoingIf.java b/jdk/test/java/net/MulticastSocket/SetOutgoingIf.java index cfcd3c09702..1acfa16ef38 100644 --- a/jdk/test/java/net/MulticastSocket/SetOutgoingIf.java +++ b/jdk/test/java/net/MulticastSocket/SetOutgoingIf.java @@ -156,12 +156,13 @@ public class SetOutgoingIf { // now check which network interface this packet comes from NetworkInterface from = NetworkInterface.getByInetAddress(packet.getAddress()); NetworkInterface shouldbe = nic; - if (!from.equals(shouldbe)) { - System.out.println("Packets on group " + if (from != null) { + if (!from.equals(shouldbe)) { + System.out.println("Packets on group " + group + " should come from " + shouldbe.getName() + ", but came from " + from.getName()); - //throw new RuntimeException("Test failed."); + } } mcastsock.leaveGroup(new InetSocketAddress(group, PORT), nic); From ba7c5970f9aa833fd933b21ad42cf62c42ea1ebe Mon Sep 17 00:00:00 2001 From: Xueming Shen Date: Wed, 27 May 2015 12:23:35 -0700 Subject: [PATCH 25/36] 8028480: (zipfs) NoSuchFileException on creating a file in ZipFileSystem with CREATE and WRITE 8034773: (zipfs) newOutputstream uses CREATE_NEW when no options specified To open the new steram with appropricate open options Reviewed-by: alanb --- .../classes/jdk/nio/zipfs/ZipFileSystem.java | 17 ++++-- .../share/classes/jdk/nio/zipfs/ZipPath.java | 2 +- jdk/test/jdk/nio/zipfs/ZFSTests.java | 52 +++++++++++++++++-- 3 files changed, 63 insertions(+), 8 deletions(-) diff --git a/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java b/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java index 17acf262266..e269216c081 100644 --- a/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java +++ b/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java @@ -503,6 +503,7 @@ class ZipFileSystem extends FileSystem { boolean hasCreateNew = false; boolean hasCreate = false; boolean hasAppend = false; + boolean hasTruncate = false; for (OpenOption opt: options) { if (opt == READ) throw new IllegalArgumentException("READ not allowed"); @@ -512,7 +513,11 @@ class ZipFileSystem extends FileSystem { hasCreate = true; if (opt == APPEND) hasAppend = true; + if (opt == TRUNCATE_EXISTING) + hasTruncate = true; } + if (hasAppend && hasTruncate) + throw new IllegalArgumentException("APPEND + TRUNCATE_EXISTING not allowed"); beginRead(); // only need a readlock, the "update()" will try { // try to obtain a writelock when the os is ensureOpen(); // being closed. @@ -564,6 +569,8 @@ class ZipFileSystem extends FileSystem { if (!(option instanceof StandardOpenOption)) throw new IllegalArgumentException(); } + if (options.contains(APPEND) && options.contains(TRUNCATE_EXISTING)) + throw new IllegalArgumentException("APPEND + TRUNCATE_EXISTING not allowed"); } // Returns a Writable/ReadByteChannel for now. Might consdier to use @@ -711,15 +718,19 @@ class ZipFileSystem extends FileSystem { if (forWrite) { checkWritable(); if (e == null) { - if (!options.contains(StandardOpenOption.CREATE_NEW)) - throw new NoSuchFileException(getString(path)); + if (!options.contains(StandardOpenOption.CREATE) && + !options.contains(StandardOpenOption.CREATE_NEW)) { + throw new NoSuchFileException(getString(path)); + } } else { - if (options.contains(StandardOpenOption.CREATE_NEW)) + if (options.contains(StandardOpenOption.CREATE_NEW)) { throw new FileAlreadyExistsException(getString(path)); + } if (e.isDir()) throw new FileAlreadyExistsException("directory <" + getString(path) + "> exists"); } + options = new HashSet<>(options); options.remove(StandardOpenOption.CREATE_NEW); // for tmpfile } else if (e == null || e.isDir()) { throw new NoSuchFileException(getString(path)); diff --git a/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipPath.java b/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipPath.java index 6001d0654ed..6e40ab574e0 100644 --- a/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipPath.java +++ b/jdk/src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipPath.java @@ -773,7 +773,7 @@ class ZipPath implements Path { { if (options.length == 0) return zfs.newOutputStream(getResolvedPath(), - CREATE_NEW, WRITE); + CREATE, TRUNCATE_EXISTING, WRITE); return zfs.newOutputStream(getResolvedPath(), options); } diff --git a/jdk/test/jdk/nio/zipfs/ZFSTests.java b/jdk/test/jdk/nio/zipfs/ZFSTests.java index 23617a31ab5..8febcf2730d 100644 --- a/jdk/test/jdk/nio/zipfs/ZFSTests.java +++ b/jdk/test/jdk/nio/zipfs/ZFSTests.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -22,7 +22,7 @@ */ /* @test - * @bug 7156873 8040059 + * @bug 7156873 8040059 8028480 8034773 * @summary ZipFileSystem regression tests * * @run main ZFSTests @@ -30,15 +30,19 @@ */ +import java.io.OutputStream; import java.net.URI; +import java.nio.ByteBuffer; +import java.nio.channels.*; import java.nio.file.*; -import java.util.Map; -import java.util.HashMap; +import java.nio.file.spi.*; +import java.util.*; public class ZFSTests { public static void main(String[] args) throws Throwable { test7156873(); + testOpenOptions(); } static void test7156873() throws Throwable { @@ -56,4 +60,44 @@ public class ZFSTests { Files.deleteIfExists(dir); } } + + static void testOpenOptions() throws Throwable { + Path path = Paths.get("file.zip"); + try { + URI uri = URI.create("jar:" + path.toUri()); + Map env = new HashMap(); + env.put("create", "true"); + try (FileSystem fs = FileSystems.newFileSystem(uri, env)) { + FileSystemProvider fsp = fs.provider(); + Set options; + Path p = fs.getPath("test.txt"); + // 8028480 + options = EnumSet.of(StandardOpenOption.CREATE, + StandardOpenOption.WRITE, + StandardOpenOption.APPEND); + try (FileChannel ch = fsp.newFileChannel(p, options)) { + ch.write(ByteBuffer.wrap("Hello!".getBytes("ASCII"))); + } + // 8034773 + try (OutputStream os = fsp.newOutputStream(p, new OpenOption[0])) { + os.write("Hello2!".getBytes("ASCII")); + } + if (!"Hello2!".equals(new String( + Files.readAllBytes(fs.getPath("test.txt"))))) { + throw new RuntimeException("failed to open as truncate_existing"); + } + + options = EnumSet.of(StandardOpenOption.CREATE, + StandardOpenOption.APPEND, + StandardOpenOption.TRUNCATE_EXISTING); + try (FileChannel ch = fsp.newFileChannel(p, options)) { + throw new RuntimeException("expected IAE not thrown!"); + } catch (IllegalArgumentException x) { + // expected x.printStackTrace(); + } + } + } finally { + Files.deleteIfExists(path); + } + } } From 7b960a2e592fdc1b70a77a48745aba1237ae758a Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Wed, 27 May 2015 15:57:10 -0400 Subject: [PATCH 26/36] 8081022: java/time/test/java/time/format/TestZoneTextPrinterParser.java fails by timeout on slow device Reduce number of iterations to 8 instead of 50 Reviewed-by: naoto --- jdk/test/java/time/TEST.properties | 1 + .../java/time/format/TestZoneTextPrinterParser.java | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/jdk/test/java/time/TEST.properties b/jdk/test/java/time/TEST.properties index 909c6193da8..f480a511913 100644 --- a/jdk/test/java/time/TEST.properties +++ b/jdk/test/java/time/TEST.properties @@ -1,3 +1,4 @@ # Threeten test uses TestNG TestNG.dirs = . othervm.dirs = tck/java/time/chrono test/java/time/chrono test/java/time/format +lib.dirs = ../../lib/testlibrary diff --git a/jdk/test/java/time/test/java/time/format/TestZoneTextPrinterParser.java b/jdk/test/java/time/test/java/time/format/TestZoneTextPrinterParser.java index 28ccbfe0516..079af06d9d6 100644 --- a/jdk/test/java/time/test/java/time/format/TestZoneTextPrinterParser.java +++ b/jdk/test/java/time/test/java/time/format/TestZoneTextPrinterParser.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -42,10 +42,17 @@ import java.util.Locale; import java.util.Random; import java.util.Set; import java.util.TimeZone; +import jdk.testlibrary.RandomFactory; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; +/* + * @test + * @bug 8081022 + * @key randomness + */ + /** * Test ZoneTextPrinterParser */ @@ -59,8 +66,8 @@ public class TestZoneTextPrinterParser extends AbstractTestPrinterParser { } public void test_printText() { - Random r = new Random(); - int N = 50; + Random r = RandomFactory.getRandom(); + int N = 8; Locale[] locales = Locale.getAvailableLocales(); Set zids = ZoneRulesProvider.getAvailableZoneIds(); ZonedDateTime zdt = ZonedDateTime.now(); From 7c57878f3933a8cab6cdeeda2a597528a7ff081d Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Wed, 27 May 2015 13:25:32 -0700 Subject: [PATCH 27/36] 8074432: Move jdeps and javap to jdk.jdeps module Reviewed-by: jjg, alanb, erikj --- ...data-jdk.dev.gmk => Gendata-jdk.jdeps.gmk} | 4 +-- jdk/make/launcher/Launcher-jdk.compiler.gmk | 5 --- jdk/make/launcher/Launcher-jdk.dev.gmk | 5 --- jdk/make/launcher/Launcher-jdk.jdeps.gmk | 36 +++++++++++++++++++ 4 files changed, 38 insertions(+), 12 deletions(-) rename jdk/make/gendata/{Gendata-jdk.dev.gmk => Gendata-jdk.jdeps.gmk} (89%) create mode 100644 jdk/make/launcher/Launcher-jdk.jdeps.gmk diff --git a/jdk/make/gendata/Gendata-jdk.dev.gmk b/jdk/make/gendata/Gendata-jdk.jdeps.gmk similarity index 89% rename from jdk/make/gendata/Gendata-jdk.dev.gmk rename to jdk/make/gendata/Gendata-jdk.jdeps.gmk index 6025b32233e..3616796eed4 100644 --- a/jdk/make/gendata/Gendata-jdk.dev.gmk +++ b/jdk/make/gendata/Gendata-jdk.jdeps.gmk @@ -25,9 +25,9 @@ include GendataCommon.gmk -$(eval $(call IncludeCustomExtension, jdk, gendata/Gendata-jdk.dev.gmk)) +$(eval $(call IncludeCustomExtension, jdk, gendata/Gendata-jdk.jdeps.gmk)) -JDEPS_MODULES_XML := $(JDK_OUTPUTDIR)/modules/jdk.dev/com/sun/tools/jdeps/resources/jdeps-modules.xml +JDEPS_MODULES_XML := $(JDK_OUTPUTDIR)/modules/jdk.jdeps/com/sun/tools/jdeps/resources/jdeps-modules.xml MODULES_XML += $(TOPDIR)/modules.xml # diff --git a/jdk/make/launcher/Launcher-jdk.compiler.gmk b/jdk/make/launcher/Launcher-jdk.compiler.gmk index 77695993886..8025085e49e 100644 --- a/jdk/make/launcher/Launcher-jdk.compiler.gmk +++ b/jdk/make/launcher/Launcher-jdk.compiler.gmk @@ -35,11 +35,6 @@ $(eval $(call SetupLauncher,javah, \ -DNEVER_ACT_AS_SERVER_CLASS_MACHINE \ -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.javah.Main"$(COMMA) }')) -$(eval $(call SetupLauncher,javap, \ - -DEXPAND_CLASSPATH_WILDCARDS \ - -DNEVER_ACT_AS_SERVER_CLASS_MACHINE \ - -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.javap.Main"$(COMMA) }')) - $(eval $(call SetupLauncher,serialver, \ -DEXPAND_CLASSPATH_WILDCARDS \ -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "sun.tools.serialver.SerialVer"$(COMMA) }')) diff --git a/jdk/make/launcher/Launcher-jdk.dev.gmk b/jdk/make/launcher/Launcher-jdk.dev.gmk index 5c01b4fb498..61cfffb29f2 100644 --- a/jdk/make/launcher/Launcher-jdk.dev.gmk +++ b/jdk/make/launcher/Launcher-jdk.dev.gmk @@ -25,10 +25,5 @@ include LauncherCommon.gmk -$(eval $(call SetupLauncher,jdeps, \ - -DEXPAND_CLASSPATH_WILDCARDS \ - -DNEVER_ACT_AS_SERVER_CLASS_MACHINE \ - -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.jdeps.Main"$(COMMA) }')) - $(eval $(call SetupLauncher,jimage,\ -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "jdk.tools.jimage.Main"$(COMMA) }')) diff --git a/jdk/make/launcher/Launcher-jdk.jdeps.gmk b/jdk/make/launcher/Launcher-jdk.jdeps.gmk new file mode 100644 index 00000000000..5448946f93b --- /dev/null +++ b/jdk/make/launcher/Launcher-jdk.jdeps.gmk @@ -0,0 +1,36 @@ +# +# 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. 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 LauncherCommon.gmk + +$(eval $(call SetupLauncher,javap, \ + -DEXPAND_CLASSPATH_WILDCARDS \ + -DNEVER_ACT_AS_SERVER_CLASS_MACHINE \ + -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.javap.Main"$(COMMA) }')) + +$(eval $(call SetupLauncher,jdeps, \ + -DEXPAND_CLASSPATH_WILDCARDS \ + -DNEVER_ACT_AS_SERVER_CLASS_MACHINE \ + -DJAVA_ARGS='{ "-J-ms8m"$(COMMA) "com.sun.tools.jdeps.Main"$(COMMA) }')) From 18dd0d63051a9baadc574f1f8233b697a8769b7d Mon Sep 17 00:00:00 2001 From: Weijun Wang Date: Thu, 28 May 2015 09:11:14 +0800 Subject: [PATCH 28/36] 8081278: Typo in Exception Message Reviewed-by: mullan --- .../classes/sun/security/jgss/krb5/Krb5AcceptCredential.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdk/src/java.security.jgss/share/classes/sun/security/jgss/krb5/Krb5AcceptCredential.java b/jdk/src/java.security.jgss/share/classes/sun/security/jgss/krb5/Krb5AcceptCredential.java index 1fbb7a1de0b..262debcaf40 100644 --- a/jdk/src/java.security.jgss/share/classes/sun/security/jgss/krb5/Krb5AcceptCredential.java +++ b/jdk/src/java.security.jgss/share/classes/sun/security/jgss/krb5/Krb5AcceptCredential.java @@ -85,7 +85,7 @@ public class Krb5AcceptCredential if (creds == null) throw new GSSException(GSSException.NO_CRED, -1, - "Failed to find any Kerberos credentails"); + "Failed to find any Kerberos credentials"); if (name == null) { String fullName = creds.getName(); From 98d6dd65f93d26d56dc937c1ee811551bc1b893e Mon Sep 17 00:00:00 2001 From: Staffan Larsen Date: Thu, 28 May 2015 10:37:49 +0200 Subject: [PATCH 29/36] 8081292: sun/tools/jmap/BasicJMapTest.java timed out Reviewed-by: mgronlun, sspitsyn --- jdk/test/sun/tools/jmap/BasicJMapTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jdk/test/sun/tools/jmap/BasicJMapTest.java b/jdk/test/sun/tools/jmap/BasicJMapTest.java index 4ed8ce2179a..30bff00b548 100644 --- a/jdk/test/sun/tools/jmap/BasicJMapTest.java +++ b/jdk/test/sun/tools/jmap/BasicJMapTest.java @@ -44,7 +44,7 @@ import jdk.testlibrary.ProcessTools; * @build jdk.test.lib.hprof.module.* * @build jdk.test.lib.hprof.parser.* * @build jdk.test.lib.hprof.utils.* - * @run main BasicJMapTest + * @run main/timeout=240 BasicJMapTest */ public class BasicJMapTest { From bfdaf0efed988409f5ceb1f8f84e37b520e7f11c Mon Sep 17 00:00:00 2001 From: Volker Simonis Date: Thu, 28 May 2015 11:22:33 +0200 Subject: [PATCH 30/36] 8081332: AIX: fix charset dependenicies after 8035302:Eliminate dependency on jdk.charsets from 2D font code Reviewed-by: prr --- jdk/make/data/charsetmapping/stdcs-aix | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 jdk/make/data/charsetmapping/stdcs-aix diff --git a/jdk/make/data/charsetmapping/stdcs-aix b/jdk/make/data/charsetmapping/stdcs-aix new file mode 100644 index 00000000000..4e82cc21440 --- /dev/null +++ b/jdk/make/data/charsetmapping/stdcs-aix @@ -0,0 +1,6 @@ +# +# generate these charsets into sun.nio.cs +# +EUC_CN +EUC_KR +GBK From c5aebd63b520d0c6240c9ef055fdb5229003ddb9 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Thu, 28 May 2015 09:55:32 -0700 Subject: [PATCH 31/36] 8081245: MHIllegalAccess.java failing across platforms Reviewed-by: alanb, rriggs --- jdk/test/ProblemList.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/jdk/test/ProblemList.txt b/jdk/test/ProblemList.txt index cf33484f7ef..37bc736a7ac 100644 --- a/jdk/test/ProblemList.txt +++ b/jdk/test/ProblemList.txt @@ -123,6 +123,9 @@ # 8029891 java/lang/ClassLoader/deadlock/GetResource.java generic-all +# 8080428 +java/lang/invoke/8022701/MHIllegalAccess.java generic-all + ############################################################################ # jdk_instrument From 91868186b064ce63ffd97a03776f331ef759ad90 Mon Sep 17 00:00:00 2001 From: Xueming Shen Date: Thu, 28 May 2015 10:00:51 -0700 Subject: [PATCH 32/36] 8038310: Re-examine integration of extended Charsets To use ServiceLoader to load the extended charsets Reviewed-by: alanb, mchung --- .../classes/java/nio/charset/Charset.java | 52 ++++++++++--------- .../java.nio.charset.spi.CharsetProvider | 2 + 2 files changed, 30 insertions(+), 24 deletions(-) create mode 100644 jdk/src/jdk.charsets/share/classes/META-INF/services/java.nio.charset.spi.CharsetProvider diff --git a/jdk/src/java.base/share/classes/java/nio/charset/Charset.java b/jdk/src/java.base/share/classes/java/nio/charset/Charset.java index 8d67ebbc8d6..a242b9c7ac8 100644 --- a/jdk/src/java.base/share/classes/java/nio/charset/Charset.java +++ b/jdk/src/java.base/share/classes/java/nio/charset/Charset.java @@ -30,6 +30,7 @@ import java.nio.CharBuffer; import java.nio.charset.spi.CharsetProvider; import java.security.AccessController; import java.security.PrivilegedAction; +import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.Iterator; @@ -336,12 +337,10 @@ public abstract class Charset // private static Iterator providers() { return new Iterator<>() { - ClassLoader cl = ClassLoader.getSystemClassLoader(); ServiceLoader sl = ServiceLoader.load(CharsetProvider.class, cl); Iterator i = sl.iterator(); - CharsetProvider next = null; private boolean getNext() { @@ -424,32 +423,36 @@ public abstract class Charset /* The extended set of charsets */ private static class ExtendedProviderHolder { - static final CharsetProvider extendedProvider = extendedProvider(); + static final CharsetProvider[] extendedProviders = extendedProviders(); // returns ExtendedProvider, if installed - private static CharsetProvider extendedProvider() { - return AccessController.doPrivileged( - new PrivilegedAction<>() { - public CharsetProvider run() { - try { - Class epc - = Class.forName("sun.nio.cs.ext.ExtendedCharsets"); - return (CharsetProvider)epc.newInstance(); - } catch (ClassNotFoundException x) { - // Extended charsets not available - // (charsets.jar not present) - } catch (InstantiationException | - IllegalAccessException x) { - throw new Error(x); - } - return null; + private static CharsetProvider[] extendedProviders() { + return AccessController.doPrivileged(new PrivilegedAction<>() { + public CharsetProvider[] run() { + CharsetProvider[] cps = new CharsetProvider[1]; + int n = 0; + ServiceLoader sl = + ServiceLoader.loadInstalled(CharsetProvider.class); + for (CharsetProvider cp : sl) { + if (n + 1 > cps.length) { + cps = Arrays.copyOf(cps, cps.length << 1); } - }); + cps[n++] = cp; + } + return n == cps.length ? cps : Arrays.copyOf(cps, n); + }}); } } private static Charset lookupExtendedCharset(String charsetName) { - CharsetProvider ecp = ExtendedProviderHolder.extendedProvider; - return (ecp != null) ? ecp.charsetForName(charsetName) : null; + if (!sun.misc.VM.isBooted()) // see lookupViaProviders() + return null; + CharsetProvider[] ecps = ExtendedProviderHolder.extendedProviders; + for (CharsetProvider cp : ecps) { + Charset cs = cp.charsetForName(charsetName); + if (cs != null) + return cs; + } + return null; } private static Charset lookup(String charsetName) { @@ -576,9 +579,10 @@ public abstract class Charset new TreeMap<>( ASCIICaseInsensitiveComparator.CASE_INSENSITIVE_ORDER); put(standardProvider.charsets(), m); - CharsetProvider ecp = ExtendedProviderHolder.extendedProvider; - if (ecp != null) + CharsetProvider[] ecps = ExtendedProviderHolder.extendedProviders; + for (CharsetProvider ecp :ecps) { put(ecp.charsets(), m); + } for (Iterator i = providers(); i.hasNext();) { CharsetProvider cp = i.next(); put(cp.charsets(), m); diff --git a/jdk/src/jdk.charsets/share/classes/META-INF/services/java.nio.charset.spi.CharsetProvider b/jdk/src/jdk.charsets/share/classes/META-INF/services/java.nio.charset.spi.CharsetProvider new file mode 100644 index 00000000000..cf0949e4ca8 --- /dev/null +++ b/jdk/src/jdk.charsets/share/classes/META-INF/services/java.nio.charset.spi.CharsetProvider @@ -0,0 +1,2 @@ +# NIO charset SPI extended charset provider +sun.nio.cs.ext.ExtendedCharsets From 5aee5a8ee73f621ed4d6a000e2866f91b845c2f3 Mon Sep 17 00:00:00 2001 From: Joe Darcy Date: Thu, 28 May 2015 11:31:40 -0700 Subject: [PATCH 33/36] 8081359: Update bug reporting URL Reviewed-by: lancea --- jdk/src/java.base/share/native/libjava/System.c | 2 +- .../share/classes/sun/tools/javac/resources/javac.properties | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/jdk/src/java.base/share/native/libjava/System.c b/jdk/src/java.base/share/native/libjava/System.c index d09af8ff78a..01d6e59cccd 100644 --- a/jdk/src/java.base/share/native/libjava/System.c +++ b/jdk/src/java.base/share/native/libjava/System.c @@ -111,7 +111,7 @@ Java_java_lang_System_identityHashCode(JNIEnv *env, jobject this, jobject x) #ifndef VENDOR /* Third party may overwrite this. */ #define VENDOR "Oracle Corporation" #define VENDOR_URL "http://java.oracle.com/" -#define VENDOR_URL_BUG "http://bugreport.sun.com/bugreport/" +#define VENDOR_URL_BUG "http://bugreport.java.com/bugreport/" #endif #define JAVA_MAX_SUPPORTED_VERSION 52 diff --git a/jdk/src/jdk.rmic/share/classes/sun/tools/javac/resources/javac.properties b/jdk/src/jdk.rmic/share/classes/sun/tools/javac/resources/javac.properties index f5ce0f8deef..2caf03fd1ea 100644 --- a/jdk/src/jdk.rmic/share/classes/sun/tools/javac/resources/javac.properties +++ b/jdk/src/jdk.rmic/share/classes/sun/tools/javac/resources/javac.properties @@ -498,9 +498,9 @@ javac.err.cant.read=\ javac.err.cant.write=\ Can''t write: {0} javac.err.fatal.error=\ - An error has occurred in the compiler; please file a bug report (http://bugreport.sun.com/bugreport/). + An error has occurred in the compiler; please file a bug report (http://bugreport.java.com/bugreport/). javac.err.fatal.exception=\ - An exception has occurred in the compiler; please file a bug report (http://bugreport.sun.com/bugreport/). + An exception has occurred in the compiler; please file a bug report (http://bugreport.java.com/bugreport/). javac.err.no.inner.classes=\ Support for inner classes has been disabled. javac.err.uncaught.exception=\ From 53a97cbeb356bb97fa2322fa9656b6458ec2de1d Mon Sep 17 00:00:00 2001 From: Mandy Chung Date: Thu, 28 May 2015 10:54:48 -0700 Subject: [PATCH 34/36] 8081347: Add @modules to jdk_core tests Co-authored-by: Alexander Kulyakthin Co-authored-by: Alan Bateman Reviewed-by: alanb, joehw, lancea --- jdk/test/com/sun/corba/transport/KeepAliveSockets.java | 1 + .../AES/TestAESCiphers/TestAESWithProviderChange.java | 1 + .../sun/crypto/provider/Cipher/KeyWrap/XMLEncKAT.java | 3 ++- .../com/sun/crypto/provider/TLS/TestKeyMaterial.java | 1 + .../com/sun/crypto/provider/TLS/TestMasterSecret.java | 2 ++ jdk/test/com/sun/crypto/provider/TLS/TestPRF.java | 1 + jdk/test/com/sun/crypto/provider/TLS/TestPRF12.java | 1 + .../com/sun/crypto/provider/TLS/TestPremaster.java | 1 + jdk/test/com/sun/jndi/cosnaming/CNNameParser.java | 1 + jdk/test/com/sun/jndi/cosnaming/IiopUrlIPv6.java | 1 + jdk/test/com/sun/jndi/dns/Parser.java | 1 + jdk/test/com/sun/jndi/ldap/Base64Test.java | 1 + jdk/test/com/sun/jndi/ldap/LdapName/Case.java | 1 + jdk/test/com/sun/jndi/ldap/LdapName/UnescapeTest.java | 1 + jdk/test/com/sun/jndi/ldap/LdapURLOptionalFields.java | 1 + jdk/test/com/sun/jndi/ldap/LdapUnicodeURL.java | 1 + .../RegistryContext/ContextWithNullProperties.java | 2 ++ .../rmi/registry/RegistryContext/UnbindIdempotent.java | 4 +++- jdk/test/com/sun/management/VMOptionOpenDataTest.java | 2 ++ jdk/test/com/sun/net/ssl/SSLSecurity/ProviderTest.java | 1 + .../com/sun/net/ssl/SSLSecurity/TruncateArray.java | 1 + .../org/apache/xml/internal/security/TruncateHMAC.java | 4 ++++ .../xml/internal/security/exceptions/LocaleTest.java | 1 + .../internal/security/transforms/ClassLoaderTest.java | 2 ++ .../BufferOverflowTest.java | 1 + jdk/test/com/sun/security/sasl/ntlm/NTLMTest.java | 2 ++ jdk/test/com/sun/tools/attach/BasicTests.java | 1 + jdk/test/com/sun/tools/attach/PermissionTest.java | 1 + jdk/test/com/sun/tools/attach/ProviderTest.java | 1 + .../com/sun/tools/attach/StartManagementAgent.java | 1 + jdk/test/com/sun/tools/attach/TempDirTest.java | 1 + .../lang/Class/getSimpleName/GetSimpleNameTest.java | 1 + jdk/test/java/lang/ProcessBuilder/Basic.java | 1 + .../lang/ProcessBuilder/RedirectWithLongFilename.java | 1 + .../AnnotationsInheritanceOrderRedefinitionTest.java | 1 + jdk/test/java/lang/invoke/8022701/MHIllegalAccess.java | 2 +- jdk/test/java/lang/invoke/RevealDirectTest.java | 1 + jdk/test/java/lang/invoke/VMAnonymousClass.java | 1 + .../java/lang/invoke/accessProtectedSuper/Test.java | 2 +- .../lambda/LambdaAccessControlDoPrivilegedTest.java | 2 +- jdk/test/java/lang/invoke/lambda/LambdaAsm.java | 4 +++- jdk/test/java/lang/invoke/lambda/LambdaStackTrace.java | 1 + jdk/test/java/lang/invoke/lookup/SpecialStatic.java | 1 + .../java/lang/reflect/Generics/TestBadSignatures.java | 1 + .../invoke/TestPrivateInterfaceMethodReflect.java | 1 + jdk/test/java/net/Authenticator/B4678055.java | 1 + jdk/test/java/net/Authenticator/B4722333.java | 1 + jdk/test/java/net/Authenticator/B4759514.java | 1 + jdk/test/java/net/Authenticator/B4921848.java | 1 + jdk/test/java/net/Authenticator/B4962064.java | 1 + jdk/test/java/net/Authenticator/B6870935.java | 1 + .../java/net/Inet4Address/textToNumericFormat.java | 1 + jdk/test/java/net/ProxySelector/LoopbackAddresses.java | 1 + jdk/test/java/net/ProxySelector/ProxyTest.java | 1 + jdk/test/java/net/Socket/HttpProxy.java | 1 + jdk/test/java/net/URL/PerConnectionProxy.java | 1 + jdk/test/java/net/URL/SpecifyHandler.java | 1 + jdk/test/java/net/URLConnection/B5052093.java | 1 + .../net/URLConnection/HandleContentTypeWithAttrs.java | 1 + jdk/test/java/nio/file/Files/InterruptCopy.java | 1 + jdk/test/java/nio/file/Files/SBC.java | 1 + .../java/nio/file/WatchService/FileTreeModifier.java | 1 + .../nio/file/WatchService/SensitivityModifier.java | 1 + .../nio/file/WatchService/WithSecurityManager.java | 1 + jdk/test/java/rmi/Naming/DefaultRegistryPort.java | 4 ++++ jdk/test/java/rmi/Naming/LookupIPv6.java | 4 ++++ jdk/test/java/rmi/Naming/LookupNameWithColon.java | 4 ++++ jdk/test/java/rmi/Naming/RmiIsNoScheme.java | 4 ++++ jdk/test/java/rmi/Naming/UnderscoreHost.java | 4 ++++ .../Naming/legalRegistryNames/LegalRegistryNames.java | 4 ++++ .../Activatable/checkActivateRef/CheckActivateRef.java | 4 ++++ .../Activatable/checkAnnotations/CheckAnnotations.java | 4 ++++ .../checkImplClassLoader/CheckImplClassLoader.java | 4 ++++ .../checkRegisterInLog/CheckRegisterInLog.java | 4 ++++ .../CreatePrivateActivatable.java | 4 ++++ .../downloadParameterClass/DownloadParameterClass.java | 4 ++++ .../elucidateNoSuchMethod/ElucidateNoSuchMethod.java | 4 ++++ .../Activatable/forceLogSnapshot/ForceLogSnapshot.java | 4 ++++ .../Activatable/inactiveGroup/InactiveGroup.java | 4 ++++ .../lookupActivationSystem/LookupActivationSystem.java | 4 ++++ .../Activatable/nestedActivate/NestedActivate.java | 4 ++++ .../nonExistentActivatable/NonExistentActivatable.java | 4 ++++ .../restartCrashedService/RestartCrashedService.java | 4 ++++ .../Activatable/restartLatecomer/RestartLatecomer.java | 4 ++++ .../Activatable/restartService/RestartService.java | 4 ++++ .../shutdownGracefully/ShutdownGracefully.java | 4 ++++ .../unregisterInactive/UnregisterInactive.java | 4 ++++ .../activateFails/ActivateFails.java | 4 ++++ .../DownloadActivationGroup.java | 4 ++++ .../checkDefaultGroupName/CheckDefaultGroupName.java | 4 ++++ .../activeGroup/IdempotentActiveGroup.java | 4 ++++ .../modifyDescriptor/ModifyDescriptor.java | 4 ++++ .../stubClassesPermitted/StubClassesPermitted.java | 5 +++++ .../unregisterGroup/UnregisterGroup.java | 4 ++++ .../rmi/activation/CommandEnvironment/SetChildEnv.java | 4 ++++ jdk/test/java/rmi/activation/log/LogTest.java | 1 + .../InheritedChannelNotServerSocket.java | 5 +++++ .../RmidViaInheritedChannel.java | 5 +++++ jdk/test/java/rmi/dgc/VMID/CheckVMID.java | 4 ++++ .../rmi/dgc/dgcImplInsulation/DGCImplInsulation.java | 4 ++++ jdk/test/java/rmi/invalidName/InvalidName.java | 4 ++++ .../altSecurityManager/AltSecurityManager.java | 4 ++++ .../registry/classPathCodebase/ClassPathCodebase.java | 4 ++++ jdk/test/java/rmi/registry/emptyName/EmptyName.java | 4 ++++ .../java/rmi/registry/interfaceHash/InterfaceHash.java | 4 ++++ .../multipleRegistries/MultipleRegistries.java | 4 ++++ jdk/test/java/rmi/registry/reexport/Reexport.java | 4 ++++ .../java/rmi/reliability/benchmark/bench/rmi/Main.java | 5 +++++ .../java/rmi/reliability/juicer/AppleUserImpl.java | 4 ++++ .../DelegateBeforePermissionCheck.java | 4 ++++ .../DelegateToContextLoader.java | 4 ++++ .../downloadArrayClass/DownloadArrayClass.java | 4 ++++ .../RMIClassLoader/getClassAnnotation/NullClass.java | 4 ++++ .../RMIClassLoader/getClassLoader/GetClassLoader.java | 4 ++++ .../loadProxyClasses/LoadProxyClasses.java | 4 ++++ .../server/RMIClassLoader/spi/ContextInsulation.java | 4 ++++ .../rmi/server/RMIClassLoader/spi/DefaultProperty.java | 4 ++++ .../java/rmi/server/RMIClassLoader/spi/Installed.java | 4 ++++ .../rmi/server/RMIClassLoader/spi/InvalidProperty.java | 4 ++++ .../java/rmi/server/RMIClassLoader/spi/Property.java | 4 ++++ .../useCodebaseOnly/UseCodebaseOnly.java | 4 ++++ .../useCodebaseOnlyDefault/UseCodebaseOnlyDefault.java | 1 + .../server/RMIClassLoader/useGetURLs/UseGetURLs.java | 4 ++++ .../activatable/UseCustomSocketFactory.java | 4 ++++ .../registry/UseCustomSocketFactory.java | 4 ++++ .../unicast/UseCustomSocketFactory.java | 4 ++++ .../verifyRemoteEquals/VerifyRemoteEquals.java | 4 ++++ .../keepAliveDuringCall/KeepAliveDuringCall.java | 4 ++++ .../unexportObject/UnexportLeak.java | 4 ++++ .../CheckUnmarshalOnStopThread.java | 4 ++++ .../Unreferenced/finiteGCLatency/FiniteGCLatency.java | 4 ++++ .../leaseCheckInterval/LeaseCheckInterval.java | 4 ++++ .../unreferencedContext/UnreferencedContext.java | 4 ++++ .../rmi/server/clientStackTrace/ClientStackTrace.java | 4 ++++ .../java/rmi/server/getRemoteClass/GetRemoteClass.java | 4 ++++ .../java/rmi/server/useCustomRef/UseCustomRef.java | 4 ++++ jdk/test/java/rmi/transport/checkFQDN/CheckFQDN.java | 6 +++++- .../transport/checkLeaseInfoLeak/CheckLeaseLeak.java | 4 ++++ .../transport/closeServerSocket/CloseServerSocket.java | 4 ++++ .../java/rmi/transport/dgcDeadLock/DGCDeadLock.java | 4 ++++ .../transport/handshakeFailure/HandshakeFailure.java | 4 ++++ .../transport/handshakeTimeout/HandshakeTimeout.java | 4 ++++ .../java/rmi/transport/httpSocket/HttpSocketTest.java | 5 +++++ .../pinClientSocketFactory/PinClientSocketFactory.java | 4 ++++ .../rapidExportUnexport/RapidExportUnexport.java | 4 ++++ .../transport/reuseDefaultPort/ReuseDefaultPort.java | 4 ++++ jdk/test/java/security/BasicPermission/Wildcard.java | 2 ++ .../security/KeyPairGenerator/SolarisShortDSA.java | 1 + .../java/security/PermissionCollection/Concurrent.java | 1 + .../java/security/Policy/GetInstance/GetInstance.java | 2 +- .../Policy/PolicyProvider/UseSystemClassLoader.java | 1 + .../ProtectionDomain/PreserveCombinerTest.java | 1 + .../CertPathBuilder/selfIssued/DisableRevocation.java | 1 + .../CertPathBuilder/selfIssued/KeyUsageMatters.java | 1 + .../selfIssued/StatusLoopDependency.java | 1 + .../cert/CertPathValidator/trustAnchor/ValidateNC.java | 1 + .../cert/CertificateRevokedException/Basic.java | 1 + jdk/test/java/text/Bidi/Bug6850113.java | 1 + jdk/test/java/util/Calendar/Bug8007038.java | 1 + jdk/test/java/util/Calendar/CldrFormatNamesTest.java | 3 ++- jdk/test/java/util/Formatter/Basic.java | 1 + jdk/test/java/util/Locale/Bug6989440.java | 1 + jdk/test/java/util/Locale/Bug8004240.java | 1 + .../util/jar/JarInputStream/ExtraFileInMetaInf.java | 6 ++++-- jdk/test/java/util/jar/Manifest/CreateManifest.java | 1 + jdk/test/java/util/logging/CustomLogManagerTest.java | 1 + .../RootLogger/setLevel/TestRootLoggerLevel.java | 1 + .../util/logging/LogManagerAppContextDeadlock.java | 1 + jdk/test/java/util/logging/LoggingDeadlock4.java | 1 + .../util/logging/RootLogger/RootLevelInConfigFile.java | 1 + jdk/test/java/util/logging/SimpleLogManager.java | 1 + .../java/util/logging/TestAppletLoggerContext.java | 1 + jdk/test/java/util/logging/TestGetLoggerNPE.java | 1 + jdk/test/java/util/logging/TestLoggerWeakRefLeak.java | 3 ++- jdk/test/java/util/logging/TestMainAppContext.java | 1 + jdk/test/javax/net/ssl/FixingJavadocs/ComURLNulls.java | 2 ++ jdk/test/javax/net/ssl/GetInstance.java | 1 + .../net/ssl/SSLSession/CheckMyTrustedKeystore.java | 1 + .../javax/net/ssl/ServerName/SSLEngineExplorer.java | 1 + .../ssl/ServerName/SSLEngineExplorerMatchedSNI.java | 1 + .../ssl/ServerName/SSLEngineExplorerUnmatchedSNI.java | 1 + .../net/ssl/ServerName/SSLEngineExplorerWithCli.java | 1 + .../net/ssl/ServerName/SSLEngineExplorerWithSrv.java | 1 + .../javax/net/ssl/ServerName/SSLSocketExplorer.java | 1 + .../net/ssl/ServerName/SSLSocketExplorerFailure.java | 1 + .../ssl/ServerName/SSLSocketExplorerMatchedSNI.java | 1 + .../ssl/ServerName/SSLSocketExplorerUnmatchedSNI.java | 1 + .../ssl/ServerName/SSLSocketExplorerWithCliSNI.java | 1 + .../ssl/ServerName/SSLSocketExplorerWithSrvSNI.java | 1 + jdk/test/javax/net/ssl/TLS/TestJSSE.java | 2 ++ jdk/test/javax/net/ssl/TLSv12/ShortRSAKeyGCM.java | 1 + jdk/test/javax/script/VersionTest.java | 2 ++ .../javax/security/auth/Subject/SubjectNullTests.java | 3 +++ .../javax/security/auth/kerberos/StandardNames.java | 1 + .../auth/login/Configuration/GetInstanceSecurity.java | 2 -- .../security/auth/x500/X500Principal/NameFormat.java | 1 + jdk/test/javax/sql/testng/TEST.properties | 3 +++ .../xml/bind/xjc/8029837/PreParseGrammarTest.java | 4 ++++ jdk/test/javax/xml/crypto/dsig/GenerationTests.java | 3 +++ jdk/test/javax/xml/crypto/dsig/ValidationTests.java | 3 +++ .../javax/xml/crypto/dsig/keyinfo/KeyInfo/Marshal.java | 1 + .../jaxp/Encodings/CheckEncodingPropertiesFile.java | 1 + jdk/test/javax/xml/jaxp/XPath/8035577/Regex.java | 1 + .../javax/xml/jaxp/parsers/8022548/XOMParserTest.java | 4 ++++ jdk/test/javax/xml/jaxp/testng/TEST.properties | 8 ++++++++ jdk/test/jdk/internal/jimage/VerifyJimage.java | 1 + jdk/test/lib/security/CheckBlacklistedCerts.java | 1 + .../lib/testlibrary/OutputAnalyzerReportingTest.java | 3 ++- jdk/test/lib/testlibrary/OutputAnalyzerTest.java | 3 ++- .../lib/testlibrary/jdk/testlibrary/ProcessTools.java | 2 -- jdk/test/sun/invoke/util/ValueConversionsTest.java | 1 + .../PlatformMBeanProviderConstructorCheck.java | 1 + .../management/jmxremote/startstop/JMXStatusTest.java | 1 + jdk/test/sun/misc/CopyMemory.java | 1 + jdk/test/sun/misc/Encode/DecodeBuffer.java | 2 +- jdk/test/sun/misc/Encode/Encode.java | 2 +- jdk/test/sun/misc/Encode/GetBytes.java | 1 + .../sun/misc/FloatingDecimal/TestFDBigInteger.java | 1 + .../sun/misc/FloatingDecimal/TestFloatingDecimal.java | 1 + jdk/test/sun/misc/JarIndex/JarIndexMergeTest.java | 3 ++- jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java | 1 + jdk/test/sun/misc/JavaLangAccess/FormatUnsigned.java | 3 ++- jdk/test/sun/misc/JavaLangAccess/NewUnsafeString.java | 3 ++- jdk/test/sun/misc/Safe.java | 1 + jdk/test/sun/misc/URLClassPath/ClassnameCharTest.java | 5 +++-- jdk/test/sun/misc/VM/GetNanoTimeAdjustment.java | 1 + jdk/test/sun/misc/Version/Version.java | 1 + .../InetAddress/nameservice/chaining/Providers.java | 1 + .../sun/net/InetAddress/nameservice/deadlock/Hang.java | 1 + .../net/InetAddress/nameservice/simple/CacheTest.java | 1 + .../InetAddress/nameservice/simple/DefaultCaching.java | 1 + jdk/test/sun/net/TelnetTest.java | 1 + jdk/test/sun/net/ftp/B6427768.java | 1 + jdk/test/sun/net/idn/PunycodeTest.java | 1 + jdk/test/sun/net/idn/TestStringPrep.java | 1 + jdk/test/sun/net/www/AuthHeaderTest.java | 1 + jdk/test/sun/net/www/EmbeddedEquals.java | 1 + jdk/test/sun/net/www/HeaderTests.java | 2 +- jdk/test/sun/net/www/MessageHeaderTest.java | 1 + jdk/test/sun/net/www/ParseUtil_4922813.java | 5 +++-- jdk/test/sun/net/www/ParseUtil_6274990.java | 1 + jdk/test/sun/net/www/ParseUtil_6306697.java | 1 + jdk/test/sun/net/www/ParseUtil_6380332.java | 1 + jdk/test/sun/net/www/ParseUtil_6478588.java | 1 + .../ChunkedEncodingWithProgressMonitorTest.java | 3 ++- jdk/test/sun/net/www/http/HttpClient/GetProxyPort.java | 3 ++- .../sun/net/www/http/HttpClient/ImplicitFileName.java | 7 ++++--- jdk/test/sun/net/www/http/HttpClient/IsAvailable.java | 2 ++ .../sun/net/www/http/HttpClient/IsKeepingAlive.java | 2 ++ jdk/test/sun/net/www/http/HttpClient/OpenServer.java | 1 + .../sun/net/www/http/HttpClient/ProxyFromCache.java | 3 ++- jdk/test/sun/net/www/http/HttpClient/RequestURI.java | 3 ++- jdk/test/sun/net/www/http/KeepAliveCache/B5045306.java | 1 + .../sun/net/www/protocol/ftp/UserAndPasswordTest.java | 1 - jdk/test/sun/net/www/protocol/http/B6296310.java | 1 + .../sun/net/www/protocol/http/CloseOptionHeader.java | 1 + jdk/test/sun/net/www/protocol/http/DigestTest.java | 1 + jdk/test/sun/net/www/protocol/http/NTLMTest.java | 1 + jdk/test/sun/net/www/protocol/http/NoNTLM.java | 1 + .../sun/net/www/protocol/http/RelativeRedirect.java | 1 + .../sun/net/www/protocol/http/ResponseCacheStream.java | 1 + .../sun/net/www/protocol/http/RetryUponTimeout.java | 1 + .../net/www/protocol/http/SetChunkedStreamingMode.java | 3 ++- .../sun/net/www/protocol/http/TunnelThroughProxy.java | 1 + jdk/test/sun/net/www/protocol/http/UserAgent.java | 1 + jdk/test/sun/net/www/protocol/http/ZoneId.java | 1 + .../net/www/protocol/https/ChunkedOutputStream.java | 1 + .../www/protocol/https/HttpsClient/ProxyAuthTest.java | 1 + .../protocol/https/HttpsURLConnection/B6216082.java | 5 +++-- .../protocol/https/HttpsURLConnection/B6226610.java | 3 ++- .../https/HttpsURLConnection/CheckMethods.java | 1 + .../https/HttpsURLConnection/DNSIdentities.java | 2 -- .../HttpsURLConnection/IPAddressDNSIdentities.java | 2 -- .../HttpsURLConnection/IPAddressIPIdentities.java | 2 -- .../https/HttpsURLConnection/IPIdentities.java | 2 -- .../protocol/https/HttpsURLConnection/Identities.java | 2 -- .../www/protocol/https/NewImpl/ComHTTPSConnection.java | 2 ++ .../protocol/https/NewImpl/ComHostnameVerifier.java | 2 ++ jdk/test/sun/nio/cs/OLD/TestIBMDB.java | 1 + jdk/test/sun/nio/cs/TestEUC_TW.java | 1 + jdk/test/sun/nio/cs/TestStringCoding.java | 5 +++-- .../AnonymousNewInstance/ManyNewInstanceAnonTest.java | 4 +++- .../reflect/CallerSensitive/CallerSensitiveFinder.java | 1 + .../CallerSensitive/MissingCallerSensitive.java | 4 ++++ .../reflect/Reflection/GetCallerClassWithDepth.java | 1 + jdk/test/sun/rmi/log/ReliableLog/LogAlignmentTest.java | 1 + jdk/test/sun/rmi/log/ReliableLog/SnapshotSize.java | 1 + jdk/test/sun/rmi/rmic/classpath/RMICClassPathTest.java | 2 ++ .../sun/rmi/rmic/iiopCompilation/IIOPCompilation.java | 5 +++++ jdk/test/sun/rmi/runtime/Log/4504153/Test4504153.java | 4 ++++ .../sun/rmi/runtime/Log/6409194/NoConsoleOutput.java | 4 ++++ .../rmi/runtime/Log/checkLogging/CheckLogStreams.java | 4 ++++ .../sun/rmi/runtime/Log/checkLogging/CheckLogging.java | 4 ++++ .../marshalForeignStub/MarshalForeignStub.java | 4 ++++ .../rmi/transport/proxy/DisableHttpDefaultValue.java | 1 + .../sun/rmi/transport/proxy/EagerHttpFallback.java | 4 ++++ .../sun/rmi/transport/tcp/DeadCachedConnection.java | 4 ++++ .../rmi/transport/tcp/blockAccept/BlockAcceptTest.java | 1 + jdk/test/sun/security/action/Generify.java | 1 + .../action/GetLongAction/ReturnNullIfNoDefault.java | 1 + jdk/test/sun/security/ec/TestEC.java | 1 + jdk/test/sun/security/jgss/DefaultGssConfig.java | 1 + jdk/test/sun/security/jgss/GssNPE.java | 1 + .../sun/security/jgss/spnego/NegTokenTargFields.java | 1 + .../sun/security/jgss/spnego/NoSpnegoAsDefMech.java | 1 + .../sun/security/jgss/spnego/NotPreferredMech.java | 3 +++ jdk/test/sun/security/krb5/KrbCredSubKey.java | 2 ++ jdk/test/sun/security/krb5/MicroTime.java | 1 + jdk/test/sun/security/krb5/NegativeNonce.java | 1 + jdk/test/sun/security/krb5/OptionPADataInKDCReq.java | 2 ++ jdk/test/sun/security/krb5/RFC396xTest.java | 3 +++ .../sun/security/krb5/ServiceCredsCombination.java | 1 + jdk/test/sun/security/krb5/TestPAData.java | 2 ++ jdk/test/sun/security/krb5/UnknownCCEntry.java | 2 ++ jdk/test/sun/security/krb5/auto/AcceptPermissions.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/AcceptorSubKey.java | 8 ++++++++ .../sun/security/krb5/auto/AddressesAndNameType.java | 7 +++++++ jdk/test/sun/security/krb5/auto/BadKdc1.java | 7 +++++++ jdk/test/sun/security/krb5/auto/BadKdc2.java | 7 +++++++ jdk/test/sun/security/krb5/auto/BadKdc3.java | 7 +++++++ jdk/test/sun/security/krb5/auto/BadKdc4.java | 7 +++++++ jdk/test/sun/security/krb5/auto/Basic.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/BasicKrb5Test.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/BasicProc.java | 7 +++++++ jdk/test/sun/security/krb5/auto/CleanState.java | 7 +++++++ jdk/test/sun/security/krb5/auto/CrossRealm.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/DiffNameSameKey.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/DupEtypes.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/DynamicKeytab.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/EmptyPassword.java | 7 +++++++ jdk/test/sun/security/krb5/auto/FileKeyTab.java | 8 +++++++- jdk/test/sun/security/krb5/auto/ForwardableCheck.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/GSS.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/GSSUnbound.java | 8 ++++++++ .../sun/security/krb5/auto/HttpNegotiateServer.java | 9 +++++++++ .../sun/security/krb5/auto/IgnoreChannelBinding.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/KPEquals.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/KeyPermissions.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/KeyTabCompat.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/KvnoNA.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/LifeTimeInSeconds.java | 7 +++++++ .../sun/security/krb5/auto/LoginModuleOptions.java | 7 +++++++ jdk/test/sun/security/krb5/auto/LoginNoPass.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/MSOID2.java | 9 +++++++++ jdk/test/sun/security/krb5/auto/MaxRetries.java | 7 +++++++ jdk/test/sun/security/krb5/auto/MoreKvno.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/NewInquireTypes.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/NewSalt.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/NoAddresses.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/NoInitNoKeytab.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/NonMutualSpnego.java | 8 ++++++++ .../sun/security/krb5/auto/NoneReplayCacheTest.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/OkAsDelegate.java | 8 ++++++++ .../sun/security/krb5/auto/OkAsDelegateXRealm.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/OnlyDesLogin.java | 7 +++++++ .../sun/security/krb5/auto/PrincipalNameEquals.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/RRC.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/Renewal.java | 8 +++++++- .../sun/security/krb5/auto/ReplayCacheExpunge.java | 2 ++ .../sun/security/krb5/auto/ReplayCachePrecise.java | 3 +++ jdk/test/sun/security/krb5/auto/ReplayCacheTest.java | 8 ++++++++ .../sun/security/krb5/auto/ReplayCacheTestProc.java | 10 ++++++++++ jdk/test/sun/security/krb5/auto/S4U2proxy.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/S4U2proxyGSS.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/S4U2self.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/S4U2selfAsServer.java | 8 ++++++++ .../sun/security/krb5/auto/S4U2selfAsServerGSS.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/S4U2selfGSS.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/SPNEGO.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/SSL.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/SaslBasic.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/SaslGSS.java | 9 +++++++++ jdk/test/sun/security/krb5/auto/SaslUnbound.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/SpnegoLifeTime.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/SpnegoReqFlags.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/TcpTimeout.java | 7 +++++++ jdk/test/sun/security/krb5/auto/Test5653.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/TwoOrThree.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/TwoPrinces.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/TwoTab.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/UdpTcp.java | 7 +++++++ jdk/test/sun/security/krb5/auto/UnboundService.java | 8 ++++++++ jdk/test/sun/security/krb5/auto/Unreachable.java | 1 + .../sun/security/krb5/auto/UseCacheAndStoreKey.java | 7 +++++++ jdk/test/sun/security/krb5/auto/W83.java | 7 +++++++ jdk/test/sun/security/krb5/canonicalize/Test.java | 2 ++ jdk/test/sun/security/krb5/ccache/CorruptedCC.java | 2 ++ jdk/test/sun/security/krb5/ccache/DefaultFile.java | 1 + jdk/test/sun/security/krb5/ccache/EmptyCC.java | 2 ++ jdk/test/sun/security/krb5/ccache/EmptyRealmCC.java | 2 ++ jdk/test/sun/security/krb5/ccache/TimeInCCache.java | 2 ++ .../sun/security/krb5/config/ConfigWithQuotations.java | 1 + jdk/test/sun/security/krb5/config/DefUdpLimit.java | 1 + jdk/test/sun/security/krb5/config/DnsFallback.java | 1 + jdk/test/sun/security/krb5/config/Duplicates.java | 1 + jdk/test/sun/security/krb5/config/Duration.java | 1 + jdk/test/sun/security/krb5/config/ExtraLines.java | 1 + jdk/test/sun/security/krb5/config/Include.java | 1 + .../sun/security/krb5/config/KdcDefaultOptions.java | 2 ++ jdk/test/sun/security/krb5/config/ParseCAPaths.java | 1 + jdk/test/sun/security/krb5/config/ParseConfig.java | 1 + .../sun/security/krb5/config/SCDynamicConfigTest.java | 1 + jdk/test/sun/security/krb5/config/YesNo.java | 2 ++ jdk/test/sun/security/krb5/etype/ETypeOrder.java | 1 + jdk/test/sun/security/krb5/etype/WeakCrypto.java | 2 ++ jdk/test/sun/security/krb5/ktab/FileKeyTab.java | 2 ++ jdk/test/sun/security/krb5/ktab/HighestKvno.java | 2 ++ jdk/test/sun/security/krb5/ktab/KeyString.java | 3 +++ jdk/test/sun/security/krb5/ktab/KeyTabIndex.java | 2 ++ jdk/test/sun/security/krb5/name/Constructors.java | 1 + jdk/test/sun/security/krb5/name/Immutable.java | 1 + jdk/test/sun/security/krb5/tools/KtabZero.java | 1 + .../EncryptedPKInfoEqualsHashCode.java | 2 ++ jdk/test/sun/security/pkcs/pkcs9/UnknownAttribute.java | 3 +++ jdk/test/sun/security/pkcs/pkcs9/UnstructuredName.java | 1 + jdk/test/sun/security/pkcs11/KeyStore/Basic.java | 3 +-- .../security/pkcs11/Provider/ConfigQuotedString.java | 3 +-- jdk/test/sun/security/pkcs11/Provider/Login.java | 3 +-- jdk/test/sun/security/pkcs11/ec/TestCurves.java | 1 + jdk/test/sun/security/pkcs11/ec/TestECDH2.java | 1 + jdk/test/sun/security/pkcs11/ec/TestECDSA2.java | 1 + .../sun/security/pkcs11/fips/ClientJSSEServerJSSE.java | 1 + .../sun/security/pkcs11/fips/TrustManagerTest.java | 1 + jdk/test/sun/security/pkcs11/tls/TestKeyMaterial.java | 1 + jdk/test/sun/security/pkcs11/tls/TestMasterSecret.java | 2 ++ jdk/test/sun/security/pkcs11/tls/TestPRF.java | 1 + jdk/test/sun/security/pkcs11/tls/TestPremaster.java | 1 + jdk/test/sun/security/pkcs12/PKCS12SameKeyId.java | 4 ++++ .../sun/security/provider/MessageDigest/DigestKAT.java | 1 + .../sun/security/provider/PolicyFile/Comparator.java | 3 ++- .../sun/security/provider/PolicyFile/TokenStore.java | 3 +-- .../security/provider/PolicyParser/BogusGrants.java | 1 + .../sun/security/provider/PolicyParser/EncodeURL.java | 1 + .../sun/security/provider/PolicyParser/TokenStore.java | 1 + jdk/test/sun/security/provider/X509Factory/BadPem.java | 1 + jdk/test/sun/security/provider/X509Factory/BigCRL.java | 1 + .../security/provider/certpath/CertId/CheckCertId.java | 2 ++ .../certpath/DisabledAlgorithms/CPBuilder.java | 1 - .../certpath/DisabledAlgorithms/CPBuilderWithMD5.java | 1 - .../provider/certpath/OCSP/OCSPSingleExtensions.java | 1 + .../certpath/SunCertPathBuilderExceptionTest.java | 1 + .../certpath/X509CertPath/IllegalCertiticates.java | 1 + .../security/ssl/ClientHandshaker/LengthCheckTest.java | 1 + .../sun/security/ssl/InputRecord/ClientHelloRead.java | 1 + .../ssl/ServerHandshaker/GetPeerHostClient.java | 1 - .../ssl/X509TrustManagerImpl/CheckNullEntity.java | 1 + .../ssl/X509TrustManagerImpl/ClientServer.java | 1 + .../security/tools/jarsigner/CertChainUnclosed.java | 2 ++ .../sun/security/tools/jarsigner/DefaultSigalg.java | 6 ++++++ .../sun/security/tools/jarsigner/EntriesOrder.java | 3 +++ .../security/tools/jarsigner/JarSigningNonAscii.java | 1 + .../sun/security/tools/jarsigner/LargeJarEntry.java | 1 + .../security/tools/jarsigner/TsacertOptionTest.java | 6 ++++++ jdk/test/sun/security/tools/keytool/CloseFile.java | 1 + jdk/test/sun/security/tools/keytool/NewSize7.java | 1 + jdk/test/sun/security/tools/keytool/StartDateTest.java | 1 + .../security/tools/keytool/UnknownAndUnparseable.java | 3 +++ jdk/test/sun/security/util/BitArray/NamedBitList.java | 2 ++ jdk/test/sun/security/util/Debug/MultiOptions.java | 1 + .../sun/security/util/DerInputBuffer/BigInteger0.java | 1 + .../DerInputBuffer/DerInputBufferEqualsHashCode.java | 2 ++ .../security/util/DerInputBuffer/PaddedBitString.java | 1 + .../sun/security/util/DerInputBuffer/TimeParsing.java | 1 + .../security/util/DerOutputStream/LocaleInTime.java | 1 + jdk/test/sun/security/util/DerValue/BadValue.java | 2 ++ .../security/util/DerValue/DerValueEqualsHashCode.java | 2 ++ jdk/test/sun/security/util/DerValue/EmptyValue.java | 1 + jdk/test/sun/security/util/DerValue/Indefinite.java | 1 + jdk/test/sun/security/util/DerValue/NegInt.java | 1 + .../util/HostnameMatcher/TestHostnameChecker.java | 1 + jdk/test/sun/security/util/Oid/OidFormat.java | 2 ++ jdk/test/sun/security/util/Oid/S11N.java | 2 ++ .../util/PropertyExpander/ExpandAndEncode.java | 1 + .../sun/security/util/Resources/NewNamesFormat.java | 4 ++++ .../sun/security/util/asn1StringTypes/StringTypes.java | 1 + jdk/test/sun/security/validator/ConstructorTest.java | 1 + .../security/validator/EndEntityExtensionCheck.java | 1 + jdk/test/sun/security/x509/AVA/AVAEqualsHashCode.java | 2 ++ jdk/test/sun/security/x509/AVA/BadName.java | 1 + .../sun/security/x509/AVA/DomainComponentEncoding.java | 2 ++ .../sun/security/x509/AVA/EmailAddressEncoding.java | 2 ++ .../x509/AlgorithmId/AlgorithmIdEqualsHashCode.java | 1 + .../x509/AlgorithmId/ExtensibleAlgorithmId.java | 1 + .../security/x509/AlgorithmId/NonStandardNames.java | 4 ++++ .../sun/security/x509/AlgorithmId/SHA256withECDSA.java | 1 + .../sun/security/x509/AlgorithmId/TurkishRegion.java | 1 + jdk/test/sun/security/x509/Extensions/BCNull.java | 1 + .../security/x509/Extensions/DefaultCriticality.java | 1 + jdk/test/sun/security/x509/GeneralName/Encode.java | 2 ++ jdk/test/sun/security/x509/URIName/Parse.java | 2 ++ jdk/test/sun/security/x509/X500Name/AllAttribs.java | 1 + .../security/x509/X500Name/DerValueConstructor.java | 2 ++ jdk/test/sun/security/x509/X500Name/EmailKeyword.java | 1 + jdk/test/sun/security/x509/X500Name/NullX500Name.java | 3 +++ .../security/x509/X500Name/RDNwithMultipleAVAs.java | 1 + .../sun/security/x509/X509CRLImpl/OrderAndDup.java | 2 ++ .../security/x509/equalNames/AltNamesEqualsTest.java | 2 ++ jdk/test/sun/tools/java/CFCTest.java | 4 +++- jdk/test/sun/util/calendar/zi/TestZoneInfo310.java | 1 + jdk/test/sun/util/locale/provider/Bug8038436.java | 2 ++ jdk/test/sun/util/logging/PlatformLoggerTest.java | 1 + jdk/test/sun/util/logging/SourceClassName.java | 1 + jdk/test/tools/jar/ChangeDir.java | 1 + jdk/test/tools/jar/JarBackSlash.java | 1 + jdk/test/tools/jar/JarEntryTime.java | 1 + jdk/test/tools/jar/UpdateJar.java | 1 + jdk/test/tools/jar/UpdateManifest.java | 1 + jdk/test/tools/jar/index/MetaInf.java | 1 + 508 files changed, 1379 insertions(+), 68 deletions(-) diff --git a/jdk/test/com/sun/corba/transport/KeepAliveSockets.java b/jdk/test/com/sun/corba/transport/KeepAliveSockets.java index 4d9b9d97855..e062c596264 100644 --- a/jdk/test/com/sun/corba/transport/KeepAliveSockets.java +++ b/jdk/test/com/sun/corba/transport/KeepAliveSockets.java @@ -26,6 +26,7 @@ * @bug 8017195 * @summary Introduce option to setKeepAlive parameter on CORBA sockets * + * @modules java.corba/com.sun.corba.se.impl.orb java.corba/com.sun.corba.se.impl.transport * @run main/othervm KeepAliveSockets * @run main/othervm -Dcom.sun.CORBA.transport.enableTcpKeepAlive KeepAliveSockets * @run main/othervm -Dcom.sun.CORBA.transport.enableTcpKeepAlive=true KeepAliveSockets diff --git a/jdk/test/com/sun/crypto/provider/Cipher/AES/TestAESCiphers/TestAESWithProviderChange.java b/jdk/test/com/sun/crypto/provider/Cipher/AES/TestAESCiphers/TestAESWithProviderChange.java index 8dec9f136a4..d29a0aa0904 100644 --- a/jdk/test/com/sun/crypto/provider/Cipher/AES/TestAESCiphers/TestAESWithProviderChange.java +++ b/jdk/test/com/sun/crypto/provider/Cipher/AES/TestAESCiphers/TestAESWithProviderChange.java @@ -27,6 +27,7 @@ import java.security.Security; * @bug 8044193 * @summary Test AES ciphers with different modes and padding schemes after * remove then add provider. + * @modules java.base/com.sun.crypto.provider * @run main/othervm/policy=testAES.policy TestAESWithProviderChange */ diff --git a/jdk/test/com/sun/crypto/provider/Cipher/KeyWrap/XMLEncKAT.java b/jdk/test/com/sun/crypto/provider/Cipher/KeyWrap/XMLEncKAT.java index 3a4a25cc06b..93f9991ee1e 100644 --- a/jdk/test/com/sun/crypto/provider/Cipher/KeyWrap/XMLEncKAT.java +++ b/jdk/test/com/sun/crypto/provider/Cipher/KeyWrap/XMLEncKAT.java @@ -24,9 +24,10 @@ /* * @test * @bug 5008159 5008156 - * @run main XMLEncKAT * @summary Verify that the two key wrap ciphers, i.e. "DESedeWrap" * and "AESWrap", work as expected. + * @modules java.base/sun.misc + * @run main XMLEncKAT * @author Valerie Peng */ import java.security.Key; diff --git a/jdk/test/com/sun/crypto/provider/TLS/TestKeyMaterial.java b/jdk/test/com/sun/crypto/provider/TLS/TestKeyMaterial.java index 8874070f484..d07c9ee3e52 100644 --- a/jdk/test/com/sun/crypto/provider/TLS/TestKeyMaterial.java +++ b/jdk/test/com/sun/crypto/provider/TLS/TestKeyMaterial.java @@ -26,6 +26,7 @@ * @bug 6313661 * @summary Known-answer-test for TlsKeyMaterial generator * @author Andreas Sterbenz + * @modules java.base/sun.security.internal.spec */ import java.io.*; diff --git a/jdk/test/com/sun/crypto/provider/TLS/TestMasterSecret.java b/jdk/test/com/sun/crypto/provider/TLS/TestMasterSecret.java index 3025ef5f2d1..10f6ddc4019 100644 --- a/jdk/test/com/sun/crypto/provider/TLS/TestMasterSecret.java +++ b/jdk/test/com/sun/crypto/provider/TLS/TestMasterSecret.java @@ -26,6 +26,8 @@ * @bug 6313661 * @summary Known-answer-test for TlsMasterSecret generator * @author Andreas Sterbenz + * @modules java.base/sun.security.internal.interfaces + * java.base/sun.security.internal.spec */ import java.io.*; diff --git a/jdk/test/com/sun/crypto/provider/TLS/TestPRF.java b/jdk/test/com/sun/crypto/provider/TLS/TestPRF.java index 9c6f9ecf80a..577927ea883 100644 --- a/jdk/test/com/sun/crypto/provider/TLS/TestPRF.java +++ b/jdk/test/com/sun/crypto/provider/TLS/TestPRF.java @@ -26,6 +26,7 @@ * @bug 6313661 * @summary Basic known-answer-test for TlsPrf * @author Andreas Sterbenz + * @modules java.base/sun.security.internal.spec */ import java.io.*; diff --git a/jdk/test/com/sun/crypto/provider/TLS/TestPRF12.java b/jdk/test/com/sun/crypto/provider/TLS/TestPRF12.java index d9384bffa78..dffda070e47 100644 --- a/jdk/test/com/sun/crypto/provider/TLS/TestPRF12.java +++ b/jdk/test/com/sun/crypto/provider/TLS/TestPRF12.java @@ -24,6 +24,7 @@ /** * @test * @bug 6313661 + * @modules java.base/sun.security.internal.spec * @summary Basic known-answer-test for TlsPrf 12 * * Vector obtained from the IETF TLS working group mailing list: diff --git a/jdk/test/com/sun/crypto/provider/TLS/TestPremaster.java b/jdk/test/com/sun/crypto/provider/TLS/TestPremaster.java index f19e7546ddd..b95b0855dd0 100644 --- a/jdk/test/com/sun/crypto/provider/TLS/TestPremaster.java +++ b/jdk/test/com/sun/crypto/provider/TLS/TestPremaster.java @@ -26,6 +26,7 @@ * @bug 6313661 * @summary Basic tests for TlsRsaPremasterSecret generator * @author Andreas Sterbenz + * @modules java.base/sun.security.internal.spec */ import java.security.Security; diff --git a/jdk/test/com/sun/jndi/cosnaming/CNNameParser.java b/jdk/test/com/sun/jndi/cosnaming/CNNameParser.java index f4d8baccc5b..1c429b29100 100644 --- a/jdk/test/com/sun/jndi/cosnaming/CNNameParser.java +++ b/jdk/test/com/sun/jndi/cosnaming/CNNameParser.java @@ -25,6 +25,7 @@ * @bug 4238914 * @summary Tests that JNDI/COS naming parser supports the syntax * defined in the new INS standard. + * @modules java.corba/com.sun.jndi.cosnaming */ import javax.naming.*; diff --git a/jdk/test/com/sun/jndi/cosnaming/IiopUrlIPv6.java b/jdk/test/com/sun/jndi/cosnaming/IiopUrlIPv6.java index 478bd5a9883..ebaf6d8761c 100644 --- a/jdk/test/com/sun/jndi/cosnaming/IiopUrlIPv6.java +++ b/jdk/test/com/sun/jndi/cosnaming/IiopUrlIPv6.java @@ -24,6 +24,7 @@ /* @test * @bug 5042453 * @summary Ipv6 address throws Non-numeric port number error + * @modules java.corba/com.sun.jndi.cosnaming */ import com.sun.jndi.cosnaming.*; diff --git a/jdk/test/com/sun/jndi/dns/Parser.java b/jdk/test/com/sun/jndi/dns/Parser.java index 3e5bf5aa71d..4532ede3957 100644 --- a/jdk/test/com/sun/jndi/dns/Parser.java +++ b/jdk/test/com/sun/jndi/dns/Parser.java @@ -25,6 +25,7 @@ * @test * @bug 8035105 * @summary DNS resource record parsing + * @modules jdk.naming.dns/com.sun.jndi.dns */ import com.sun.jndi.dns.ResourceRecord; diff --git a/jdk/test/com/sun/jndi/ldap/Base64Test.java b/jdk/test/com/sun/jndi/ldap/Base64Test.java index a5547af8ca5..24f46afeb8d 100644 --- a/jdk/test/com/sun/jndi/ldap/Base64Test.java +++ b/jdk/test/com/sun/jndi/ldap/Base64Test.java @@ -25,6 +25,7 @@ * @test * @bug 8035807 * @summary Confirm that old and new Base64 encodings are compatible. + * @modules java.base/sun.misc */ import java.io.*; diff --git a/jdk/test/com/sun/jndi/ldap/LdapName/Case.java b/jdk/test/com/sun/jndi/ldap/LdapName/Case.java index e37b8d9ff86..078464d104e 100644 --- a/jdk/test/com/sun/jndi/ldap/LdapName/Case.java +++ b/jdk/test/com/sun/jndi/ldap/LdapName/Case.java @@ -26,6 +26,7 @@ * @bug 4278094 * @summary Ensure that setValuesCaseSensitive() does not leave name * in an invalid state. + * @modules java.naming/com.sun.jndi.ldap */ import com.sun.jndi.ldap.LdapName; diff --git a/jdk/test/com/sun/jndi/ldap/LdapName/UnescapeTest.java b/jdk/test/com/sun/jndi/ldap/LdapName/UnescapeTest.java index 75ded9c80cb..fc2b54bd554 100644 --- a/jdk/test/com/sun/jndi/ldap/LdapName/UnescapeTest.java +++ b/jdk/test/com/sun/jndi/ldap/LdapName/UnescapeTest.java @@ -26,6 +26,7 @@ * @bug 4892070 * @summary java gets hung in * com.sun.jndi.ldap.LdapName$TypeAndValue.unescapeValue() + * @modules java.naming/com.sun.jndi.ldap */ import com.sun.jndi.ldap.LdapName; diff --git a/jdk/test/com/sun/jndi/ldap/LdapURLOptionalFields.java b/jdk/test/com/sun/jndi/ldap/LdapURLOptionalFields.java index 86b5c1a442b..7f5da15f54b 100644 --- a/jdk/test/com/sun/jndi/ldap/LdapURLOptionalFields.java +++ b/jdk/test/com/sun/jndi/ldap/LdapURLOptionalFields.java @@ -25,6 +25,7 @@ * @test * @bug 8074761 * @summary RFC-2255 allows attribute, scope and filter to be empty. + * @modules java.naming/com.sun.jndi.ldap */ import com.sun.jndi.ldap.LdapURL; diff --git a/jdk/test/com/sun/jndi/ldap/LdapUnicodeURL.java b/jdk/test/com/sun/jndi/ldap/LdapUnicodeURL.java index 60f9759d482..b751122fa4f 100644 --- a/jdk/test/com/sun/jndi/ldap/LdapUnicodeURL.java +++ b/jdk/test/com/sun/jndi/ldap/LdapUnicodeURL.java @@ -25,6 +25,7 @@ * @test * @bug 6961765 * @summary Double byte characters corrupted in DN for LDAP referrals + * @modules java.naming/com.sun.jndi.ldap */ import com.sun.jndi.ldap.LdapURL; diff --git a/jdk/test/com/sun/jndi/rmi/registry/RegistryContext/ContextWithNullProperties.java b/jdk/test/com/sun/jndi/rmi/registry/RegistryContext/ContextWithNullProperties.java index edd15ae2338..b980bb644c9 100644 --- a/jdk/test/com/sun/jndi/rmi/registry/RegistryContext/ContextWithNullProperties.java +++ b/jdk/test/com/sun/jndi/rmi/registry/RegistryContext/ContextWithNullProperties.java @@ -25,6 +25,8 @@ * @test * @bug 6676075 * @summary RegistryContext (com.sun.jndi.url.rmi.rmiURLContext) coding problem + * @modules jdk.naming.rmi/com.sun.jndi.rmi.registry java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server java.rmi/sun.rmi.transport java.rmi/sun.rmi.transport.tcp * @library ../../../../../../java/rmi/testlibrary * @build TestLibrary * @run main ContextWithNullProperties diff --git a/jdk/test/com/sun/jndi/rmi/registry/RegistryContext/UnbindIdempotent.java b/jdk/test/com/sun/jndi/rmi/registry/RegistryContext/UnbindIdempotent.java index 692c7fd5cab..5709c2b5ca8 100644 --- a/jdk/test/com/sun/jndi/rmi/registry/RegistryContext/UnbindIdempotent.java +++ b/jdk/test/com/sun/jndi/rmi/registry/RegistryContext/UnbindIdempotent.java @@ -25,7 +25,9 @@ * @test * @bug 4278121 * @summary Ensure that calling unbind() on an unbound name returns - * successfully. + * successfully. + * @modules java.rmi/sun.rmi.registry java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport java.rmi/sun.rmi.transport.tcp * @library ../../../../../../java/rmi/testlibrary * @build TestLibrary * @run main UnbindIdempotent diff --git a/jdk/test/com/sun/management/VMOptionOpenDataTest.java b/jdk/test/com/sun/management/VMOptionOpenDataTest.java index 7f90fd5c705..3436c67fa20 100644 --- a/jdk/test/com/sun/management/VMOptionOpenDataTest.java +++ b/jdk/test/com/sun/management/VMOptionOpenDataTest.java @@ -31,6 +31,8 @@ import sun.management.MappedMXBeanType; * @test * @bug 8042901 * @summary Check that MappedMXBeanType.toOpenTypeData supports VMOption + * @modules java.management/sun.management + * jdk.management/com.sun.management * @author Shanliang Jiang */ public class VMOptionOpenDataTest { diff --git a/jdk/test/com/sun/net/ssl/SSLSecurity/ProviderTest.java b/jdk/test/com/sun/net/ssl/SSLSecurity/ProviderTest.java index 4fceaf26adb..43589cab6d9 100644 --- a/jdk/test/com/sun/net/ssl/SSLSecurity/ProviderTest.java +++ b/jdk/test/com/sun/net/ssl/SSLSecurity/ProviderTest.java @@ -24,6 +24,7 @@ /* * @test * @bug 4667976 + * @modules java.base/com.sun.net.ssl * @compile JavaxSSLContextImpl.java ComSSLContextImpl.java * JavaxTrustManagerFactoryImpl.java ComTrustManagerFactoryImpl.java * JavaxKeyManagerFactoryImpl.java ComKeyManagerFactoryImpl.java diff --git a/jdk/test/com/sun/net/ssl/SSLSecurity/TruncateArray.java b/jdk/test/com/sun/net/ssl/SSLSecurity/TruncateArray.java index b17b8f6b657..cc25449b5a3 100644 --- a/jdk/test/com/sun/net/ssl/SSLSecurity/TruncateArray.java +++ b/jdk/test/com/sun/net/ssl/SSLSecurity/TruncateArray.java @@ -25,6 +25,7 @@ * @test * @bug 4665824 * @summary JSSE - ClassCastException with 1.4 + * @modules java.base/com.sun.net.ssl */ import com.sun.net.ssl.*; diff --git a/jdk/test/com/sun/org/apache/xml/internal/security/TruncateHMAC.java b/jdk/test/com/sun/org/apache/xml/internal/security/TruncateHMAC.java index dd477ddfce0..3eb3ef2fa70 100644 --- a/jdk/test/com/sun/org/apache/xml/internal/security/TruncateHMAC.java +++ b/jdk/test/com/sun/org/apache/xml/internal/security/TruncateHMAC.java @@ -26,6 +26,10 @@ * @bug 6824440 6858484 * @summary Check that Apache XMLSec APIs will not accept HMAC truncation * lengths less than minimum bound + * @modules java.xml.crypto/com.sun.org.apache.xml.internal.security + * java.xml.crypto/com.sun.org.apache.xml.internal.security.c14n + * java.xml.crypto/com.sun.org.apache.xml.internal.security.signature + * java.xml.crypto/com.sun.org.apache.xml.internal.security.utils * @compile -XDignore.symbol.file TruncateHMAC.java * @run main TruncateHMAC */ diff --git a/jdk/test/com/sun/org/apache/xml/internal/security/exceptions/LocaleTest.java b/jdk/test/com/sun/org/apache/xml/internal/security/exceptions/LocaleTest.java index 491a941084d..aaffed4ec5e 100644 --- a/jdk/test/com/sun/org/apache/xml/internal/security/exceptions/LocaleTest.java +++ b/jdk/test/com/sun/org/apache/xml/internal/security/exceptions/LocaleTest.java @@ -26,6 +26,7 @@ * @bug 6454215 * @summary Make sure there are no runtime errors when throwing Apache XML * Security exceptions in a non-US default locale. + * @modules java.xml.crypto/com.sun.org.apache.xml.internal.security.exceptions * @compile -XDignore.symbol.file LocaleTest.java * @run main LocaleTest */ diff --git a/jdk/test/com/sun/org/apache/xml/internal/security/transforms/ClassLoaderTest.java b/jdk/test/com/sun/org/apache/xml/internal/security/transforms/ClassLoaderTest.java index 010cdd1004c..3a330a8bf9d 100644 --- a/jdk/test/com/sun/org/apache/xml/internal/security/transforms/ClassLoaderTest.java +++ b/jdk/test/com/sun/org/apache/xml/internal/security/transforms/ClassLoaderTest.java @@ -25,6 +25,8 @@ * @test * @author Sean Mullan * @bug 6461674 8009217 7147060 + * @modules java.xml.crypto/com.sun.org.apache.xml.internal.security.exceptions + * java.xml.crypto/com.sun.org.apache.xml.internal.security.transforms * @compile -XDignore.symbol.file ClassLoaderTest.java MyTransform.java * @run main/othervm ClassLoaderTest * @summary Ensure Transform.register works with transform implementations diff --git a/jdk/test/com/sun/org/apache/xml/internal/security/utils/UnsyncByteArrayOutputStream/BufferOverflowTest.java b/jdk/test/com/sun/org/apache/xml/internal/security/utils/UnsyncByteArrayOutputStream/BufferOverflowTest.java index ffb3c9e963d..d4559a2b539 100644 --- a/jdk/test/com/sun/org/apache/xml/internal/security/utils/UnsyncByteArrayOutputStream/BufferOverflowTest.java +++ b/jdk/test/com/sun/org/apache/xml/internal/security/utils/UnsyncByteArrayOutputStream/BufferOverflowTest.java @@ -26,6 +26,7 @@ * @bug 6954275 * @summary Check that UnsyncByteArrayOutputStream does not * throw ArrayIndexOutOfBoundsException + * @modules java.xml.crypto/com.sun.org.apache.xml.internal.security.utils * @compile -XDignore.symbol.file BufferOverflowTest.java * @run main BufferOverflowTest */ diff --git a/jdk/test/com/sun/security/sasl/ntlm/NTLMTest.java b/jdk/test/com/sun/security/sasl/ntlm/NTLMTest.java index 46d2f041383..8f0362d5157 100644 --- a/jdk/test/com/sun/security/sasl/ntlm/NTLMTest.java +++ b/jdk/test/com/sun/security/sasl/ntlm/NTLMTest.java @@ -25,6 +25,8 @@ * @test * @bug 6911951 7150092 * @summary NTLM should be a supported Java SASL mechanism + * @modules java.base/sun.misc + * java.security.sasl */ import java.io.IOException; import javax.security.sasl.*; diff --git a/jdk/test/com/sun/tools/attach/BasicTests.java b/jdk/test/com/sun/tools/attach/BasicTests.java index 896e6275930..7d6f7aa43f2 100644 --- a/jdk/test/com/sun/tools/attach/BasicTests.java +++ b/jdk/test/com/sun/tools/attach/BasicTests.java @@ -37,6 +37,7 @@ import jdk.testlibrary.ProcessThread; * @test * @bug 6173612 6273707 6277253 6335921 6348630 6342019 6381757 * @summary Basic unit tests for the VM attach mechanism. + * @modules jdk.jartool/sun.tools.jar * @library /lib/testlibrary * @modules java.instrument * java.management diff --git a/jdk/test/com/sun/tools/attach/PermissionTest.java b/jdk/test/com/sun/tools/attach/PermissionTest.java index 530ce6bf806..3254431a9a1 100644 --- a/jdk/test/com/sun/tools/attach/PermissionTest.java +++ b/jdk/test/com/sun/tools/attach/PermissionTest.java @@ -32,6 +32,7 @@ import jdk.testlibrary.ProcessThread; * @test * @bug 6173612 6273707 6277253 6335921 6348630 6342019 6381757 * @summary Basic unit tests for the VM attach mechanism. + * @modules jdk.jartool/sun.tools.jar * @library /lib/testlibrary * @modules java.management * jdk.attach diff --git a/jdk/test/com/sun/tools/attach/ProviderTest.java b/jdk/test/com/sun/tools/attach/ProviderTest.java index c948e3b23b0..685cc47f7ac 100644 --- a/jdk/test/com/sun/tools/attach/ProviderTest.java +++ b/jdk/test/com/sun/tools/attach/ProviderTest.java @@ -32,6 +32,7 @@ import com.sun.tools.attach.spi.AttachProvider; * @test * @bug 6173612 6273707 6277253 6335921 6348630 6342019 6381757 * @summary Basic unit tests for the VM attach mechanism. + * @modules jdk.jartool/sun.tools.jar * @library /lib/testlibrary * @modules java.management * jdk.attach diff --git a/jdk/test/com/sun/tools/attach/StartManagementAgent.java b/jdk/test/com/sun/tools/attach/StartManagementAgent.java index fd4ecef6def..7d3f13d1b55 100644 --- a/jdk/test/com/sun/tools/attach/StartManagementAgent.java +++ b/jdk/test/com/sun/tools/attach/StartManagementAgent.java @@ -39,6 +39,7 @@ import jdk.testlibrary.Utils; /* * @test * @summary Test for VirtualMachine.startManagementAgent and VirtualMachine.startLocalManagementAgent + * @modules jdk.jartool/sun.tools.jar * @library /lib/testlibrary * @modules java.management * jdk.attach diff --git a/jdk/test/com/sun/tools/attach/TempDirTest.java b/jdk/test/com/sun/tools/attach/TempDirTest.java index d4efc77919c..ae388c860b8 100644 --- a/jdk/test/com/sun/tools/attach/TempDirTest.java +++ b/jdk/test/com/sun/tools/attach/TempDirTest.java @@ -37,6 +37,7 @@ import jdk.testlibrary.ProcessThread; * @test * @bug 8033104 * @summary Test to make sure attach and jvmstat works correctly when java.io.tmpdir is set + * @modules jdk.jartool/sun.tools.jar * @library /lib/testlibrary * @modules java.management * jdk.jartool/sun.tools.jar diff --git a/jdk/test/java/lang/Class/getSimpleName/GetSimpleNameTest.java b/jdk/test/java/lang/Class/getSimpleName/GetSimpleNameTest.java index 69382710191..0dc966caf12 100644 --- a/jdk/test/java/lang/Class/getSimpleName/GetSimpleNameTest.java +++ b/jdk/test/java/lang/Class/getSimpleName/GetSimpleNameTest.java @@ -24,6 +24,7 @@ /* @test * @bug 8057919 * @summary Class.getSimpleName() should work for non-JLS compliant class names + * @modules java.base/jdk.internal.org.objectweb.asm */ import jdk.internal.org.objectweb.asm.*; import static jdk.internal.org.objectweb.asm.Opcodes.*; diff --git a/jdk/test/java/lang/ProcessBuilder/Basic.java b/jdk/test/java/lang/ProcessBuilder/Basic.java index 93855f19bcb..7977c7ff9d2 100644 --- a/jdk/test/java/lang/ProcessBuilder/Basic.java +++ b/jdk/test/java/lang/ProcessBuilder/Basic.java @@ -29,6 +29,7 @@ * 4947220 7018606 7034570 4244896 5049299 8003488 8054494 8058464 * 8067796 * @summary Basic tests for Process and Environment Variable code + * @modules java.base/sun.misc * @run main/othervm/timeout=300 Basic * @run main/othervm/timeout=300 -Djdk.lang.Process.launchMechanism=fork Basic * @author Martin Buchholz diff --git a/jdk/test/java/lang/ProcessBuilder/RedirectWithLongFilename.java b/jdk/test/java/lang/ProcessBuilder/RedirectWithLongFilename.java index c13dda33f8a..ed5551af5b9 100644 --- a/jdk/test/java/lang/ProcessBuilder/RedirectWithLongFilename.java +++ b/jdk/test/java/lang/ProcessBuilder/RedirectWithLongFilename.java @@ -25,6 +25,7 @@ * @test * @bug 8072611 * @summary ProcessBuilder Redirect to file appending on Windows should work with long file names + * @modules java.base/sun.misc * @author Thomas Stuefe */ diff --git a/jdk/test/java/lang/annotation/AnnotationsInheritanceOrderRedefinitionTest.java b/jdk/test/java/lang/annotation/AnnotationsInheritanceOrderRedefinitionTest.java index 909154a7c1e..982852c8dfb 100644 --- a/jdk/test/java/lang/annotation/AnnotationsInheritanceOrderRedefinitionTest.java +++ b/jdk/test/java/lang/annotation/AnnotationsInheritanceOrderRedefinitionTest.java @@ -27,6 +27,7 @@ * @summary Test inheritance, order and class redefinition behaviour of RUNTIME * class annotations * @author plevart + * @modules java.base/sun.reflect.annotation */ import sun.reflect.annotation.AnnotationParser; diff --git a/jdk/test/java/lang/invoke/8022701/MHIllegalAccess.java b/jdk/test/java/lang/invoke/8022701/MHIllegalAccess.java index 44aa9c98253..badc1a817f3 100644 --- a/jdk/test/java/lang/invoke/8022701/MHIllegalAccess.java +++ b/jdk/test/java/lang/invoke/8022701/MHIllegalAccess.java @@ -26,7 +26,7 @@ * @test * @bug 8022701 * @summary Illegal access exceptions via methodhandle invocations threw wrong error. - * + * @modules java.base/jdk.internal.org.objectweb.asm * @compile -XDignore.symbol.file BogoLoader.java InvokeSeveralWays.java MHIllegalAccess.java MethodSupplier.java * @run main/othervm MHIllegalAccess */ diff --git a/jdk/test/java/lang/invoke/RevealDirectTest.java b/jdk/test/java/lang/invoke/RevealDirectTest.java index 2b5ac7c9a02..55cd0b62aa7 100644 --- a/jdk/test/java/lang/invoke/RevealDirectTest.java +++ b/jdk/test/java/lang/invoke/RevealDirectTest.java @@ -24,6 +24,7 @@ /* * @test * @summary verify Lookup.revealDirect on a variety of input handles + * @modules java.base/sun.reflect * @compile -XDignore.symbol.file RevealDirectTest.java * @run junit/othervm -ea -esa test.java.lang.invoke.RevealDirectTest * diff --git a/jdk/test/java/lang/invoke/VMAnonymousClass.java b/jdk/test/java/lang/invoke/VMAnonymousClass.java index f67cba8dc7e..5a2eebfffa8 100644 --- a/jdk/test/java/lang/invoke/VMAnonymousClass.java +++ b/jdk/test/java/lang/invoke/VMAnonymousClass.java @@ -24,6 +24,7 @@ /* @test * @bug 8046903 * @summary VM anonymous class members can't be statically invocable + * @modules java.base/sun.misc java.base/jdk.internal.org.objectweb.asm * @run junit test.java.lang.invoke.VMAnonymousClass */ package test.java.lang.invoke; diff --git a/jdk/test/java/lang/invoke/accessProtectedSuper/Test.java b/jdk/test/java/lang/invoke/accessProtectedSuper/Test.java index 3907ceb1849..b83496f692f 100644 --- a/jdk/test/java/lang/invoke/accessProtectedSuper/Test.java +++ b/jdk/test/java/lang/invoke/accessProtectedSuper/Test.java @@ -26,7 +26,7 @@ * @test * @bug 8022718 * @summary Runtime accessibility checking: protected class, if extended, should be accessible from another package - * + * @modules java.base/jdk.internal.org.objectweb.asm * @compile -XDignore.symbol.file BogoLoader.java MethodInvoker.java Test.java anotherpkg/MethodSupplierOuter.java * @run main/othervm Test */ diff --git a/jdk/test/java/lang/invoke/lambda/LambdaAccessControlDoPrivilegedTest.java b/jdk/test/java/lang/invoke/lambda/LambdaAccessControlDoPrivilegedTest.java index 4761967e83d..4defa470c9a 100644 --- a/jdk/test/java/lang/invoke/lambda/LambdaAccessControlDoPrivilegedTest.java +++ b/jdk/test/java/lang/invoke/lambda/LambdaAccessControlDoPrivilegedTest.java @@ -76,7 +76,7 @@ public class LambdaAccessControlDoPrivilegedTest extends LUtils { doprivJava.delete(); doprivClass.delete(); tr = doExec(JAVA_CMD.getAbsolutePath(), - "-Xbootclasspath/p:foo.jar", + "-Xbootclasspath/a:foo.jar", "-cp", ".", "Bar"); tr.assertZero("testDoPrivileged fails"); barJava.delete(); diff --git a/jdk/test/java/lang/invoke/lambda/LambdaAsm.java b/jdk/test/java/lang/invoke/lambda/LambdaAsm.java index 0f80d17461f..d19ed75e03a 100644 --- a/jdk/test/java/lang/invoke/lambda/LambdaAsm.java +++ b/jdk/test/java/lang/invoke/lambda/LambdaAsm.java @@ -26,6 +26,8 @@ * @bug 8027232 * @summary ensures that j.l.i.InvokerByteCodeGenerator and ASM visitMethodInsn * generate bytecodes with correct constant pool references + * @modules java.base/jdk.internal.org.objectweb.asm + * jdk.compiler/com.sun.tools.classfile * @compile -XDignore.symbol.file LambdaAsm.java LUtils.java * @run main/othervm LambdaAsm */ @@ -133,7 +135,7 @@ public class LambdaAsm { int mcount = 0; try (DirectoryStream ds = newDirectoryStream(new File(".").toPath(), // filter in lambda proxy classes - "A$I$$Lambda$?.class")) { + "A$I$$Lambda$*.class")) { for (Path p : ds) { System.out.println(p.toFile()); ClassFile cf = ClassFile.read(p.toFile()); diff --git a/jdk/test/java/lang/invoke/lambda/LambdaStackTrace.java b/jdk/test/java/lang/invoke/lambda/LambdaStackTrace.java index e2cdb7946a0..cf433d4c4dc 100644 --- a/jdk/test/java/lang/invoke/lambda/LambdaStackTrace.java +++ b/jdk/test/java/lang/invoke/lambda/LambdaStackTrace.java @@ -25,6 +25,7 @@ * @test * @bug 8025636 * @summary Synthetic frames should be hidden in exceptions + * @modules java.base/jdk.internal.org.objectweb.asm * @compile -XDignore.symbol.file LUtils.java LambdaStackTrace.java * @run main LambdaStackTrace */ diff --git a/jdk/test/java/lang/invoke/lookup/SpecialStatic.java b/jdk/test/java/lang/invoke/lookup/SpecialStatic.java index 57f55570752..ea587059c28 100644 --- a/jdk/test/java/lang/invoke/lookup/SpecialStatic.java +++ b/jdk/test/java/lang/invoke/lookup/SpecialStatic.java @@ -24,6 +24,7 @@ /* @test * @bug 8032400 * @summary JSR292: invokeSpecial: InternalError attempting to lookup a method + * @modules java.base/jdk.internal.org.objectweb.asm * @compile -XDignore.symbol.file SpecialStatic.java * @run junit test.java.lang.invoke.lookup.SpecialStatic */ diff --git a/jdk/test/java/lang/reflect/Generics/TestBadSignatures.java b/jdk/test/java/lang/reflect/Generics/TestBadSignatures.java index 6d380244ed2..699c8cb8544 100644 --- a/jdk/test/java/lang/reflect/Generics/TestBadSignatures.java +++ b/jdk/test/java/lang/reflect/Generics/TestBadSignatures.java @@ -26,6 +26,7 @@ * @bug 6832374 7052898 * @summary Test bad signatures get a GenericSignatureFormatError thrown. * @author Joseph D. Darcy + * @modules java.base/sun.reflect.generics.parser */ import java.lang.reflect.*; diff --git a/jdk/test/java/lang/reflect/Method/invoke/TestPrivateInterfaceMethodReflect.java b/jdk/test/java/lang/reflect/Method/invoke/TestPrivateInterfaceMethodReflect.java index 83ead89fe69..e386d463049 100644 --- a/jdk/test/java/lang/reflect/Method/invoke/TestPrivateInterfaceMethodReflect.java +++ b/jdk/test/java/lang/reflect/Method/invoke/TestPrivateInterfaceMethodReflect.java @@ -26,6 +26,7 @@ * @bug 8026213 * @summary Reflection support for private methods in interfaces * @author Robert Field + * @modules java.base/jdk.internal.org.objectweb.asm * @run main TestPrivateInterfaceMethodReflect */ diff --git a/jdk/test/java/net/Authenticator/B4678055.java b/jdk/test/java/net/Authenticator/B4678055.java index dc5befb6d22..f390d9a07be 100644 --- a/jdk/test/java/net/Authenticator/B4678055.java +++ b/jdk/test/java/net/Authenticator/B4678055.java @@ -24,6 +24,7 @@ /** * @test * @bug 4678055 + * @modules java.base/sun.net.www * @library ../../../sun/net/www/httptest/ * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main B4678055 diff --git a/jdk/test/java/net/Authenticator/B4722333.java b/jdk/test/java/net/Authenticator/B4722333.java index 441e1107887..efc016f91a6 100644 --- a/jdk/test/java/net/Authenticator/B4722333.java +++ b/jdk/test/java/net/Authenticator/B4722333.java @@ -24,6 +24,7 @@ /** * @test * @bug 4722333 + * @modules java.base/sun.net.www * @library ../../../sun/net/www/httptest/ * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main B4722333 diff --git a/jdk/test/java/net/Authenticator/B4759514.java b/jdk/test/java/net/Authenticator/B4759514.java index d81dd62e3ff..33ecd2e81bd 100644 --- a/jdk/test/java/net/Authenticator/B4759514.java +++ b/jdk/test/java/net/Authenticator/B4759514.java @@ -24,6 +24,7 @@ /** * @test * @bug 4759514 + * @modules java.base/sun.net.www * @library ../../../sun/net/www/httptest/ * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main B4759514 diff --git a/jdk/test/java/net/Authenticator/B4921848.java b/jdk/test/java/net/Authenticator/B4921848.java index 98a6e594802..37872b7892e 100644 --- a/jdk/test/java/net/Authenticator/B4921848.java +++ b/jdk/test/java/net/Authenticator/B4921848.java @@ -24,6 +24,7 @@ /** * @test * @bug 4921848 + * @modules java.base/sun.net.www * @library ../../../sun/net/www/httptest/ * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main/othervm -Dhttp.auth.preference=basic B4921848 diff --git a/jdk/test/java/net/Authenticator/B4962064.java b/jdk/test/java/net/Authenticator/B4962064.java index b7eae976275..b2bba7a57ce 100644 --- a/jdk/test/java/net/Authenticator/B4962064.java +++ b/jdk/test/java/net/Authenticator/B4962064.java @@ -24,6 +24,7 @@ /** * @test * @bug 4962064 + * @modules java.base/sun.net.www * @library ../../../sun/net/www/httptest/ * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main/othervm B4962064 diff --git a/jdk/test/java/net/Authenticator/B6870935.java b/jdk/test/java/net/Authenticator/B6870935.java index 55c634baab4..4985e7df752 100644 --- a/jdk/test/java/net/Authenticator/B6870935.java +++ b/jdk/test/java/net/Authenticator/B6870935.java @@ -24,6 +24,7 @@ /** * @test * @bug 6870935 + * @modules java.base/sun.net.www * @run main/othervm -Dhttp.nonProxyHosts="" -Dhttp.auth.digest.validateProxy=true B6870935 */ diff --git a/jdk/test/java/net/Inet4Address/textToNumericFormat.java b/jdk/test/java/net/Inet4Address/textToNumericFormat.java index be5d8ab3ec8..aff278bc97d 100644 --- a/jdk/test/java/net/Inet4Address/textToNumericFormat.java +++ b/jdk/test/java/net/Inet4Address/textToNumericFormat.java @@ -25,6 +25,7 @@ * @test * @bug 4749938 * @summary Bug in the parsing IPv4 literal addresses + * @modules java.base/sun.net.spi.nameservice * @compile -XDignore.symbol.file=true DummyNameService.java DummyNameServiceDescriptor.java * @run main/othervm -Dsun.net.spi.nameservice.provider.1=dummy,oracle textToNumericFormat */ diff --git a/jdk/test/java/net/ProxySelector/LoopbackAddresses.java b/jdk/test/java/net/ProxySelector/LoopbackAddresses.java index a8c0078f672..16c1315e820 100644 --- a/jdk/test/java/net/ProxySelector/LoopbackAddresses.java +++ b/jdk/test/java/net/ProxySelector/LoopbackAddresses.java @@ -24,6 +24,7 @@ /* @test * @bug 4924226 * @summary PIT: Can no launch jnlp application via 127.0.0.1 address on the web server + * @modules java.base/sun.net.www * @library ../../../sun/net/www/httptest/ * @build ClosedChannelList TestHttpServer HttpTransaction HttpCallback * @compile LoopbackAddresses.java diff --git a/jdk/test/java/net/ProxySelector/ProxyTest.java b/jdk/test/java/net/ProxySelector/ProxyTest.java index 9a7b3e9bbcb..c1b6c2ba41a 100644 --- a/jdk/test/java/net/ProxySelector/ProxyTest.java +++ b/jdk/test/java/net/ProxySelector/ProxyTest.java @@ -25,6 +25,7 @@ * @test * @bug 4696512 * @summary HTTP client: Improve proxy server configuration and selection + * @modules java.base/sun.net.www * @library ../../../sun/net/www/httptest/ * @build ClosedChannelList TestHttpServer HttpTransaction HttpCallback * @compile ProxyTest.java diff --git a/jdk/test/java/net/Socket/HttpProxy.java b/jdk/test/java/net/Socket/HttpProxy.java index 92f14d2d32a..e6de4712615 100644 --- a/jdk/test/java/net/Socket/HttpProxy.java +++ b/jdk/test/java/net/Socket/HttpProxy.java @@ -25,6 +25,7 @@ * @test * @bug 6370908 * @summary Add support for HTTP_CONNECT proxy in Socket class + * @modules java.base/sun.net.www */ import java.io.IOException; diff --git a/jdk/test/java/net/URL/PerConnectionProxy.java b/jdk/test/java/net/URL/PerConnectionProxy.java index 71b39d406a2..4203445cab3 100644 --- a/jdk/test/java/net/URL/PerConnectionProxy.java +++ b/jdk/test/java/net/URL/PerConnectionProxy.java @@ -24,6 +24,7 @@ /* @test * @bug 4920526 * @summary Needs per connection proxy support for URLs + * @modules java.base/sun.net.www * @library ../../../sun/net/www/httptest/ * @build ClosedChannelList TestHttpServer HttpTransaction HttpCallback * @compile PerConnectionProxy.java diff --git a/jdk/test/java/net/URL/SpecifyHandler.java b/jdk/test/java/net/URL/SpecifyHandler.java index 4f7b8dbd35f..c5e45c67c5c 100644 --- a/jdk/test/java/net/URL/SpecifyHandler.java +++ b/jdk/test/java/net/URL/SpecifyHandler.java @@ -26,6 +26,7 @@ * @bug 4135031 * @summary Test new URL contructors that allow specification of a * URLStreamHandler protocol handler. + * @modules java.base/sun.net.www.protocol.file */ import java.net.*; diff --git a/jdk/test/java/net/URLConnection/B5052093.java b/jdk/test/java/net/URLConnection/B5052093.java index be1f23ff312..878a6427724 100644 --- a/jdk/test/java/net/URLConnection/B5052093.java +++ b/jdk/test/java/net/URLConnection/B5052093.java @@ -24,6 +24,7 @@ /* * @test * @bug 5052093 + * @modules java.base/sun.net.www java.base/sun.net.www.protocol.file * @library ../../../sun/net/www/httptest/ * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main B5052093 diff --git a/jdk/test/java/net/URLConnection/HandleContentTypeWithAttrs.java b/jdk/test/java/net/URLConnection/HandleContentTypeWithAttrs.java index 87d1f831ec6..fd1430bf00d 100644 --- a/jdk/test/java/net/URLConnection/HandleContentTypeWithAttrs.java +++ b/jdk/test/java/net/URLConnection/HandleContentTypeWithAttrs.java @@ -26,6 +26,7 @@ * @bug 4160200 * @summary Make sure URLConnection.getContnentHandler * can handle MIME types with attributes + * @modules java.base/sun.net.www java.base/sun.net.www.content.text */ import java.net.*; import java.io.*; diff --git a/jdk/test/java/nio/file/Files/InterruptCopy.java b/jdk/test/java/nio/file/Files/InterruptCopy.java index c83479c9e46..34ffa0585e8 100644 --- a/jdk/test/java/nio/file/Files/InterruptCopy.java +++ b/jdk/test/java/nio/file/Files/InterruptCopy.java @@ -24,6 +24,7 @@ /* @test * @bug 4313887 6993267 * @summary Unit test for Sun-specific ExtendedCopyOption.INTERRUPTIBLE option + * @modules java.base/com.sun.nio.file * @library .. */ diff --git a/jdk/test/java/nio/file/Files/SBC.java b/jdk/test/java/nio/file/Files/SBC.java index d26428d5f60..584a370f658 100644 --- a/jdk/test/java/nio/file/Files/SBC.java +++ b/jdk/test/java/nio/file/Files/SBC.java @@ -25,6 +25,7 @@ * @bug 4313887 * @summary Unit test for java.nio.file.Files.newByteChannel * @library .. + * @modules java.base/com.sun.nio.file */ import java.nio.ByteBuffer; diff --git a/jdk/test/java/nio/file/WatchService/FileTreeModifier.java b/jdk/test/java/nio/file/WatchService/FileTreeModifier.java index d2bed2bd567..ff26a5f5f1e 100644 --- a/jdk/test/java/nio/file/WatchService/FileTreeModifier.java +++ b/jdk/test/java/nio/file/WatchService/FileTreeModifier.java @@ -25,6 +25,7 @@ * @bug 4313887 6838333 * @summary Sanity test for Sun-specific FILE_TREE watch event modifier * @library .. + * @modules java.base/com.sun.nio.file */ import java.nio.file.*; diff --git a/jdk/test/java/nio/file/WatchService/SensitivityModifier.java b/jdk/test/java/nio/file/WatchService/SensitivityModifier.java index 823539d1a23..6a9f30e8629 100644 --- a/jdk/test/java/nio/file/WatchService/SensitivityModifier.java +++ b/jdk/test/java/nio/file/WatchService/SensitivityModifier.java @@ -24,6 +24,7 @@ /* @test * @bug 4313887 * @summary Sanity test for Sun-specific sensitivity level watch event modifier + * @modules java.base/com.sun.nio.file * @library .. * @run main/timeout=240 SensitivityModifier * @key randomness diff --git a/jdk/test/java/nio/file/WatchService/WithSecurityManager.java b/jdk/test/java/nio/file/WatchService/WithSecurityManager.java index c2cd9c316f5..997144d49a3 100644 --- a/jdk/test/java/nio/file/WatchService/WithSecurityManager.java +++ b/jdk/test/java/nio/file/WatchService/WithSecurityManager.java @@ -24,6 +24,7 @@ /* @test * @bug 4313887 * @summary Unit test for Watchable#register's permission checks + * @modules java.base/com.sun.nio.file * @build WithSecurityManager * @run main/othervm WithSecurityManager denyAll.policy - fail * @run main/othervm WithSecurityManager denyAll.policy tree fail diff --git a/jdk/test/java/rmi/Naming/DefaultRegistryPort.java b/jdk/test/java/rmi/Naming/DefaultRegistryPort.java index 26e6ca31c0c..a1f2b7adfc6 100644 --- a/jdk/test/java/rmi/Naming/DefaultRegistryPort.java +++ b/jdk/test/java/rmi/Naming/DefaultRegistryPort.java @@ -27,6 +27,10 @@ * @summary change in default URL port causes regression in java.rmi.Naming * @author Dana Burns * @library ../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm DefaultRegistryPort */ diff --git a/jdk/test/java/rmi/Naming/LookupIPv6.java b/jdk/test/java/rmi/Naming/LookupIPv6.java index 7dc948b8505..ea8d7d451e1 100644 --- a/jdk/test/java/rmi/Naming/LookupIPv6.java +++ b/jdk/test/java/rmi/Naming/LookupIPv6.java @@ -26,6 +26,10 @@ * IPv6 addresses. * @bug 4402708 * @library ../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm -Djava.net.preferIPv6Addresses=true LookupIPv6 */ diff --git a/jdk/test/java/rmi/Naming/LookupNameWithColon.java b/jdk/test/java/rmi/Naming/LookupNameWithColon.java index 4250b6b37c9..a0d1e9389a0 100644 --- a/jdk/test/java/rmi/Naming/LookupNameWithColon.java +++ b/jdk/test/java/rmi/Naming/LookupNameWithColon.java @@ -27,6 +27,10 @@ * containing embedded ':' characters. * * @library ../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm LookupNameWithColon */ diff --git a/jdk/test/java/rmi/Naming/RmiIsNoScheme.java b/jdk/test/java/rmi/Naming/RmiIsNoScheme.java index fe6d1ab4031..a044ff10207 100644 --- a/jdk/test/java/rmi/Naming/RmiIsNoScheme.java +++ b/jdk/test/java/rmi/Naming/RmiIsNoScheme.java @@ -29,6 +29,10 @@ * @author Ann Wollrath * * @library ../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm RmiIsNoScheme */ diff --git a/jdk/test/java/rmi/Naming/UnderscoreHost.java b/jdk/test/java/rmi/Naming/UnderscoreHost.java index b88ca628e9a..c253ec20441 100644 --- a/jdk/test/java/rmi/Naming/UnderscoreHost.java +++ b/jdk/test/java/rmi/Naming/UnderscoreHost.java @@ -29,6 +29,10 @@ * @author Vinod Johnson * * @library ../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary UnderscoreHost_Stub * @run main/othervm UnderscoreHost */ diff --git a/jdk/test/java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java b/jdk/test/java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java index 418c3726c2d..7016e00f43c 100644 --- a/jdk/test/java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java +++ b/jdk/test/java/rmi/Naming/legalRegistryNames/LegalRegistryNames.java @@ -27,6 +27,10 @@ * @summary Naming assumes '/' is present in relative URL; change in URL causes regression * @author Dana Burns * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Legal LegalRegistryNames_Stub * @run main/othervm LegalRegistryNames */ diff --git a/jdk/test/java/rmi/activation/Activatable/checkActivateRef/CheckActivateRef.java b/jdk/test/java/rmi/activation/Activatable/checkActivateRef/CheckActivateRef.java index 58f1f253517..32e07a4b796 100644 --- a/jdk/test/java/rmi/activation/Activatable/checkActivateRef/CheckActivateRef.java +++ b/jdk/test/java/rmi/activation/Activatable/checkActivateRef/CheckActivateRef.java @@ -36,6 +36,10 @@ * functionality is in place * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivateMe CheckActivateRef_Stub * @run main/othervm/policy=security.policy/timeout=240 -Djava.rmi.server.ignoreStubClasses=true CheckActivateRef * @run main/othervm/policy=security.policy/timeout=240 -Djava.rmi.server.ignoreStubClasses=false CheckActivateRef diff --git a/jdk/test/java/rmi/activation/Activatable/checkAnnotations/CheckAnnotations.java b/jdk/test/java/rmi/activation/Activatable/checkAnnotations/CheckAnnotations.java index 126fae1e521..e99f62faba9 100644 --- a/jdk/test/java/rmi/activation/Activatable/checkAnnotations/CheckAnnotations.java +++ b/jdk/test/java/rmi/activation/Activatable/checkAnnotations/CheckAnnotations.java @@ -28,6 +28,10 @@ * @author Laird Dornin; code borrowed from Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID MyRMI CheckAnnotations_Stub * @run main/othervm/policy=security.policy/timeout=480 CheckAnnotations */ diff --git a/jdk/test/java/rmi/activation/Activatable/checkImplClassLoader/CheckImplClassLoader.java b/jdk/test/java/rmi/activation/Activatable/checkImplClassLoader/CheckImplClassLoader.java index dc54f82459b..46cadd1fd45 100644 --- a/jdk/test/java/rmi/activation/Activatable/checkImplClassLoader/CheckImplClassLoader.java +++ b/jdk/test/java/rmi/activation/Activatable/checkImplClassLoader/CheckImplClassLoader.java @@ -27,6 +27,10 @@ * @author Laird Dornin; code borrowed from Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID * MyRMI ActivatableImpl ActivatableImpl ActivatableImpl_Stub * @run main/othervm/policy=security.policy/timeout=150 CheckImplClassLoader diff --git a/jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/CheckRegisterInLog.java b/jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/CheckRegisterInLog.java index 0d03562346c..8939f6764e8 100644 --- a/jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/CheckRegisterInLog.java +++ b/jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/CheckRegisterInLog.java @@ -27,6 +27,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * ActivateMe CheckRegisterInLog_Stub * @run main/othervm/policy=security.policy/timeout=240 CheckRegisterInLog diff --git a/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java b/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java index 414527dfa4b..8ac5c1ecaa6 100644 --- a/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java +++ b/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/CreatePrivateActivatable.java @@ -27,6 +27,10 @@ * @author Laird Dornin * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivateMe * @run main/othervm/policy=security.policy/timeout=240 CreatePrivateActivatable */ diff --git a/jdk/test/java/rmi/activation/Activatable/downloadParameterClass/DownloadParameterClass.java b/jdk/test/java/rmi/activation/Activatable/downloadParameterClass/DownloadParameterClass.java index 9f236978a4a..7e63afba1ae 100644 --- a/jdk/test/java/rmi/activation/Activatable/downloadParameterClass/DownloadParameterClass.java +++ b/jdk/test/java/rmi/activation/Activatable/downloadParameterClass/DownloadParameterClass.java @@ -31,6 +31,10 @@ * @author Peter Jones (much code taken from Ann Wollrath's activation tests) * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * Foo FooReceiverImpl FooReceiverImpl_Stub Bar * @run main/othervm/policy=security.policy/timeout=240 DownloadParameterClass diff --git a/jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/ElucidateNoSuchMethod.java b/jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/ElucidateNoSuchMethod.java index 0e0efb52cd5..ff741b0bd0e 100644 --- a/jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/ElucidateNoSuchMethod.java +++ b/jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/ElucidateNoSuchMethod.java @@ -27,6 +27,10 @@ * @author Laird Dornin * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivateMe ElucidateNoSuchMethod_Stub * @run main/othervm/policy=security.policy/timeout=240 ElucidateNoSuchMethod */ diff --git a/jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/ForceLogSnapshot.java b/jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/ForceLogSnapshot.java index 55ff0cfd14e..53710ceb971 100644 --- a/jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/ForceLogSnapshot.java +++ b/jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/ForceLogSnapshot.java @@ -27,6 +27,10 @@ * @author Laird Dornin * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * ActivateMe ForceLogSnapshot_Stub * @run main/othervm/policy=security.policy/timeout=640 ForceLogSnapshot diff --git a/jdk/test/java/rmi/activation/Activatable/inactiveGroup/InactiveGroup.java b/jdk/test/java/rmi/activation/Activatable/inactiveGroup/InactiveGroup.java index 145e6109df8..fdce05cbc39 100644 --- a/jdk/test/java/rmi/activation/Activatable/inactiveGroup/InactiveGroup.java +++ b/jdk/test/java/rmi/activation/Activatable/inactiveGroup/InactiveGroup.java @@ -29,6 +29,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary ActivateMe InactiveGroup_Stub * @run main/othervm/policy=security.policy/timeout=240 InactiveGroup */ diff --git a/jdk/test/java/rmi/activation/Activatable/lookupActivationSystem/LookupActivationSystem.java b/jdk/test/java/rmi/activation/Activatable/lookupActivationSystem/LookupActivationSystem.java index df778dc8e91..4770f298919 100644 --- a/jdk/test/java/rmi/activation/Activatable/lookupActivationSystem/LookupActivationSystem.java +++ b/jdk/test/java/rmi/activation/Activatable/lookupActivationSystem/LookupActivationSystem.java @@ -29,6 +29,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * @run main/othervm/timeout=240 LookupActivationSystem */ diff --git a/jdk/test/java/rmi/activation/Activatable/nestedActivate/NestedActivate.java b/jdk/test/java/rmi/activation/Activatable/nestedActivate/NestedActivate.java index 507912e90b5..a1ddf4d9ed4 100644 --- a/jdk/test/java/rmi/activation/Activatable/nestedActivate/NestedActivate.java +++ b/jdk/test/java/rmi/activation/Activatable/nestedActivate/NestedActivate.java @@ -27,6 +27,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary ActivateMe NestedActivate_Stub * @run main/othervm/policy=security.policy/timeout=240 NestedActivate */ diff --git a/jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/NonExistentActivatable.java b/jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/NonExistentActivatable.java index df8ddbef82c..1e422e3697a 100644 --- a/jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/NonExistentActivatable.java +++ b/jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/NonExistentActivatable.java @@ -28,6 +28,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * ActivateMe NonExistentActivatable_Stub * @run main/othervm/policy=security.policy/timeout=240 NonExistentActivatable diff --git a/jdk/test/java/rmi/activation/Activatable/restartCrashedService/RestartCrashedService.java b/jdk/test/java/rmi/activation/Activatable/restartCrashedService/RestartCrashedService.java index c3026b02c93..0e8e7003cff 100644 --- a/jdk/test/java/rmi/activation/Activatable/restartCrashedService/RestartCrashedService.java +++ b/jdk/test/java/rmi/activation/Activatable/restartCrashedService/RestartCrashedService.java @@ -28,6 +28,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivateMe RestartCrashedService_Stub * @run main/othervm/policy=security.policy/timeout=240 RestartCrashedService */ diff --git a/jdk/test/java/rmi/activation/Activatable/restartLatecomer/RestartLatecomer.java b/jdk/test/java/rmi/activation/Activatable/restartLatecomer/RestartLatecomer.java index 3bbe8a60c44..1ce28b26d6c 100644 --- a/jdk/test/java/rmi/activation/Activatable/restartLatecomer/RestartLatecomer.java +++ b/jdk/test/java/rmi/activation/Activatable/restartLatecomer/RestartLatecomer.java @@ -27,6 +27,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * RestartLatecomer RestartLatecomer_Stub * @run main/othervm/policy=security.policy/timeout=240 RestartLatecomer diff --git a/jdk/test/java/rmi/activation/Activatable/restartService/RestartService.java b/jdk/test/java/rmi/activation/Activatable/restartService/RestartService.java index 468f5b239f1..221ae5b3401 100644 --- a/jdk/test/java/rmi/activation/Activatable/restartService/RestartService.java +++ b/jdk/test/java/rmi/activation/Activatable/restartService/RestartService.java @@ -27,6 +27,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary ActivateMe RestartService_Stub * @run main/othervm/policy=security.policy/timeout=240 RestartService */ diff --git a/jdk/test/java/rmi/activation/Activatable/shutdownGracefully/ShutdownGracefully.java b/jdk/test/java/rmi/activation/Activatable/shutdownGracefully/ShutdownGracefully.java index f5c04829291..d2c6a454995 100644 --- a/jdk/test/java/rmi/activation/Activatable/shutdownGracefully/ShutdownGracefully.java +++ b/jdk/test/java/rmi/activation/Activatable/shutdownGracefully/ShutdownGracefully.java @@ -28,6 +28,10 @@ * @author Laird Dornin; code borrowed from Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID * TestSecurityManager RegisteringActivatable ShutdownGracefully_Stub * @run main/othervm/policy=security.policy/timeout=700 ShutdownGracefully diff --git a/jdk/test/java/rmi/activation/Activatable/unregisterInactive/UnregisterInactive.java b/jdk/test/java/rmi/activation/Activatable/unregisterInactive/UnregisterInactive.java index 085120b159d..08f717f78d1 100644 --- a/jdk/test/java/rmi/activation/Activatable/unregisterInactive/UnregisterInactive.java +++ b/jdk/test/java/rmi/activation/Activatable/unregisterInactive/UnregisterInactive.java @@ -28,6 +28,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary ActivateMe UnregisterInactive_Stub * @run main/othervm/policy=security.policy/timeout=240 UnregisterInactive */ diff --git a/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java b/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java index 6d9ccceb141..efd6c3095ab 100644 --- a/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java +++ b/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/ActivateFails.java @@ -31,6 +31,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * ActivateMe ActivateFails_Stub ShutdownThread * @run main/othervm/java.security.policy=security.policy/timeout=240 ActivateFails diff --git a/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java b/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java index 2f025cf25b8..2752d729344 100644 --- a/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java +++ b/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/DownloadActivationGroup.java @@ -32,6 +32,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * DownloadActivationGroup MyActivationGroupImpl DownloadActivationGroup_Stub * @run main/othervm/policy=security.policy/timeout=240 DownloadActivationGroup diff --git a/jdk/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java b/jdk/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java index 38c668bf799..b329ea2e14b 100644 --- a/jdk/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java +++ b/jdk/test/java/rmi/activation/ActivationGroupDesc/checkDefaultGroupName/CheckDefaultGroupName.java @@ -30,6 +30,10 @@ * @author Laird Dornin * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main CheckDefaultGroupName */ diff --git a/jdk/test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java b/jdk/test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java index 058d3c7e2d9..521598de8f0 100644 --- a/jdk/test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java +++ b/jdk/test/java/rmi/activation/ActivationSystem/activeGroup/IdempotentActiveGroup.java @@ -29,6 +29,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * @run main/othervm/policy=security.policy/timeout=480 IdempotentActiveGroup */ diff --git a/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java b/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java index 53ff030e393..1675a7275c8 100644 --- a/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java +++ b/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/ModifyDescriptor.java @@ -29,6 +29,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * ActivateMe ModifyDescriptor_Stub * @run main/othervm/policy=security.policy/timeout=240 ModifyDescriptor diff --git a/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java b/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java index f4970da26ad..9de4500c542 100644 --- a/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java +++ b/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/StubClassesPermitted.java @@ -27,6 +27,11 @@ * @author Laird Dornin * * @library ../../../testlibrary + * @modules java.base/sun.security.provider + * java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * CanCreateStubs StubClassesPermitted_Stub * @run main/othervm/java.security.policy=security.policy/secure=java.lang.SecurityManager/timeout=240 StubClassesPermitted diff --git a/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java b/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java index 94976dc0c6f..7f4e1d22dee 100644 --- a/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java +++ b/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/UnregisterGroup.java @@ -28,6 +28,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary ActivateMe * @run main/othervm/policy=security.policy UnregisterGroup */ diff --git a/jdk/test/java/rmi/activation/CommandEnvironment/SetChildEnv.java b/jdk/test/java/rmi/activation/CommandEnvironment/SetChildEnv.java index 69274a0a797..0e132413c6b 100644 --- a/jdk/test/java/rmi/activation/CommandEnvironment/SetChildEnv.java +++ b/jdk/test/java/rmi/activation/CommandEnvironment/SetChildEnv.java @@ -35,6 +35,10 @@ * @author Adrian Colley * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * Eliza Retireable Doctor Doctor_Stub * @run main/othervm/timeout=240/policy=security.policy diff --git a/jdk/test/java/rmi/activation/log/LogTest.java b/jdk/test/java/rmi/activation/log/LogTest.java index 7d64a3dde6e..91d4726754b 100644 --- a/jdk/test/java/rmi/activation/log/LogTest.java +++ b/jdk/test/java/rmi/activation/log/LogTest.java @@ -29,6 +29,7 @@ * boundaries * @author Ann Wollrath * + * @modules java.rmi/sun.rmi.log * @run main/othervm/timeout=240 LogTest */ diff --git a/jdk/test/java/rmi/activation/rmidViaInheritedChannel/InheritedChannelNotServerSocket.java b/jdk/test/java/rmi/activation/rmidViaInheritedChannel/InheritedChannelNotServerSocket.java index d375fc84611..837c5979da4 100644 --- a/jdk/test/java/rmi/activation/rmidViaInheritedChannel/InheritedChannelNotServerSocket.java +++ b/jdk/test/java/rmi/activation/rmidViaInheritedChannel/InheritedChannelNotServerSocket.java @@ -29,6 +29,11 @@ * @author Peter Jones * * @library ../../testlibrary + * @modules java.base/sun.nio.ch + * java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * @run main/othervm/timeout=240 InheritedChannelNotServerSocket */ diff --git a/jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java b/jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java index 1f3cd6603d5..115454e256f 100644 --- a/jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java +++ b/jdk/test/java/rmi/activation/rmidViaInheritedChannel/RmidViaInheritedChannel.java @@ -27,6 +27,11 @@ * @author Ann Wollrath * * @library ../../testlibrary + * @modules java.base/sun.nio.ch + * java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID ActivationLibrary * @run main/othervm/timeout=240 RmidViaInheritedChannel */ diff --git a/jdk/test/java/rmi/dgc/VMID/CheckVMID.java b/jdk/test/java/rmi/dgc/VMID/CheckVMID.java index 05859f5ebf1..692969cc5af 100644 --- a/jdk/test/java/rmi/dgc/VMID/CheckVMID.java +++ b/jdk/test/java/rmi/dgc/VMID/CheckVMID.java @@ -30,6 +30,10 @@ * @author Ann Wollrath * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm/policy=security.policy CheckVMID */ diff --git a/jdk/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java b/jdk/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java index d6691104c38..c4a15b28bb1 100644 --- a/jdk/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java +++ b/jdk/test/java/rmi/dgc/dgcImplInsulation/DGCImplInsulation.java @@ -31,6 +31,10 @@ * @author Peter Jones * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary DGCImplInsulation_Stub * @run main/othervm/policy=security.policy DGCImplInsulation */ diff --git a/jdk/test/java/rmi/invalidName/InvalidName.java b/jdk/test/java/rmi/invalidName/InvalidName.java index 93218ec5308..ca1f247390c 100644 --- a/jdk/test/java/rmi/invalidName/InvalidName.java +++ b/jdk/test/java/rmi/invalidName/InvalidName.java @@ -32,6 +32,10 @@ * @author Laird Dornin * * @library ../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm InvalidName */ diff --git a/jdk/test/java/rmi/registry/altSecurityManager/AltSecurityManager.java b/jdk/test/java/rmi/registry/altSecurityManager/AltSecurityManager.java index ebad01300ae..7f36832e98a 100644 --- a/jdk/test/java/rmi/registry/altSecurityManager/AltSecurityManager.java +++ b/jdk/test/java/rmi/registry/altSecurityManager/AltSecurityManager.java @@ -27,6 +27,10 @@ * @author Laird Dornin * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary JavaVM RMID TestSecurityManager * @run main/othervm AltSecurityManager */ diff --git a/jdk/test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java b/jdk/test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java index 3447366a2e1..d83340bb8b0 100644 --- a/jdk/test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java +++ b/jdk/test/java/rmi/registry/classPathCodebase/ClassPathCodebase.java @@ -30,6 +30,10 @@ * @author Peter Jones * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Dummy * @run main/othervm/policy=security.policy * -Djava.rmi.server.useCodebaseOnly=false ClassPathCodebase diff --git a/jdk/test/java/rmi/registry/emptyName/EmptyName.java b/jdk/test/java/rmi/registry/emptyName/EmptyName.java index d572b8f8a35..e3f271ae589 100644 --- a/jdk/test/java/rmi/registry/emptyName/EmptyName.java +++ b/jdk/test/java/rmi/registry/emptyName/EmptyName.java @@ -25,6 +25,10 @@ * @bug 4399304 * @summary check that registry allows empty names * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm EmptyName */ diff --git a/jdk/test/java/rmi/registry/interfaceHash/InterfaceHash.java b/jdk/test/java/rmi/registry/interfaceHash/InterfaceHash.java index 88188639322..b324666e650 100644 --- a/jdk/test/java/rmi/registry/interfaceHash/InterfaceHash.java +++ b/jdk/test/java/rmi/registry/interfaceHash/InterfaceHash.java @@ -36,6 +36,10 @@ * * @author Peter Jones * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary ReferenceRegistryStub * @run main/othervm InterfaceHash * @key intermittent diff --git a/jdk/test/java/rmi/registry/multipleRegistries/MultipleRegistries.java b/jdk/test/java/rmi/registry/multipleRegistries/MultipleRegistries.java index 1945ebe8db3..5ec8265bf65 100644 --- a/jdk/test/java/rmi/registry/multipleRegistries/MultipleRegistries.java +++ b/jdk/test/java/rmi/registry/multipleRegistries/MultipleRegistries.java @@ -27,6 +27,10 @@ * @author Ann Wollrath * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm/timeout=240 MultipleRegistries */ diff --git a/jdk/test/java/rmi/registry/reexport/Reexport.java b/jdk/test/java/rmi/registry/reexport/Reexport.java index 3841178533e..a0c9707a74a 100644 --- a/jdk/test/java/rmi/registry/reexport/Reexport.java +++ b/jdk/test/java/rmi/registry/reexport/Reexport.java @@ -25,6 +25,10 @@ * @bug 4120329 * @summary RMI registry creation is impossible if first attempt fails. * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary JavaVM RegistryRunner RegistryRunner_Stub * @run main/othervm Reexport */ diff --git a/jdk/test/java/rmi/reliability/benchmark/bench/rmi/Main.java b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/Main.java index efc4d5eac71..34cd478995e 100644 --- a/jdk/test/java/rmi/reliability/benchmark/bench/rmi/Main.java +++ b/jdk/test/java/rmi/reliability/benchmark/bench/rmi/Main.java @@ -26,6 +26,11 @@ * @summary The RMI benchmark test. This java class is used to run the test * under JTREG. * @library ../../../../testlibrary ../../ + * @modules java.desktop + * java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary bench.BenchInfo bench.HtmlReporter bench.Util * bench.Benchmark bench.Reporter bench.XmlReporter bench.ConfigFormatException * bench.Harness bench.TextReporter bench.rmi.BenchServer diff --git a/jdk/test/java/rmi/reliability/juicer/AppleUserImpl.java b/jdk/test/java/rmi/reliability/juicer/AppleUserImpl.java index 70b187e25bc..8aeba6dd6aa 100644 --- a/jdk/test/java/rmi/reliability/juicer/AppleUserImpl.java +++ b/jdk/test/java/rmi/reliability/juicer/AppleUserImpl.java @@ -55,6 +55,10 @@ * has been reached. * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * Apple AppleEvent AppleImpl * Orange OrangeEcho OrangeEchoImpl OrangeImpl diff --git a/jdk/test/java/rmi/server/RMIClassLoader/delegateBeforePermissionCheck/DelegateBeforePermissionCheck.java b/jdk/test/java/rmi/server/RMIClassLoader/delegateBeforePermissionCheck/DelegateBeforePermissionCheck.java index 4e724d24f67..fa438cfeb62 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/delegateBeforePermissionCheck/DelegateBeforePermissionCheck.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/delegateBeforePermissionCheck/DelegateBeforePermissionCheck.java @@ -33,6 +33,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Foo * @run main/othervm DelegateBeforePermissionCheck */ diff --git a/jdk/test/java/rmi/server/RMIClassLoader/delegateToContextLoader/DelegateToContextLoader.java b/jdk/test/java/rmi/server/RMIClassLoader/delegateToContextLoader/DelegateToContextLoader.java index 9ffde81d7f7..ec8ef6b9eb7 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/delegateToContextLoader/DelegateToContextLoader.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/delegateToContextLoader/DelegateToContextLoader.java @@ -29,6 +29,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Dummy * @run main/othervm/policy=security.policy/timeout=120 DelegateToContextLoader */ diff --git a/jdk/test/java/rmi/server/RMIClassLoader/downloadArrayClass/DownloadArrayClass.java b/jdk/test/java/rmi/server/RMIClassLoader/downloadArrayClass/DownloadArrayClass.java index 6067f0854d7..8cba35ba527 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/downloadArrayClass/DownloadArrayClass.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/downloadArrayClass/DownloadArrayClass.java @@ -31,6 +31,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Receiver DownloadArrayClass_Stub Foo * @run main/othervm/policy=security.policy DownloadArrayClass */ diff --git a/jdk/test/java/rmi/server/RMIClassLoader/getClassAnnotation/NullClass.java b/jdk/test/java/rmi/server/RMIClassLoader/getClassAnnotation/NullClass.java index 557a846ef98..d181068c656 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/getClassAnnotation/NullClass.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/getClassAnnotation/NullClass.java @@ -28,6 +28,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm NullClass */ diff --git a/jdk/test/java/rmi/server/RMIClassLoader/getClassLoader/GetClassLoader.java b/jdk/test/java/rmi/server/RMIClassLoader/getClassLoader/GetClassLoader.java index bed73540eff..c1deb15da5e 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/getClassLoader/GetClassLoader.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/getClassLoader/GetClassLoader.java @@ -29,6 +29,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Foo * @run main/othervm/policy=security.policy GetClassLoader */ diff --git a/jdk/test/java/rmi/server/RMIClassLoader/loadProxyClasses/LoadProxyClasses.java b/jdk/test/java/rmi/server/RMIClassLoader/loadProxyClasses/LoadProxyClasses.java index cf858535e45..9b8ed213160 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/loadProxyClasses/LoadProxyClasses.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/loadProxyClasses/LoadProxyClasses.java @@ -30,6 +30,10 @@ * @author Laird Dornin * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary FnnClass FnnUnmarshal NonpublicInterface * NonpublicInterface1 PublicInterface PublicInterface1 * @run main/othervm/policy=security.policy diff --git a/jdk/test/java/rmi/server/RMIClassLoader/spi/ContextInsulation.java b/jdk/test/java/rmi/server/RMIClassLoader/spi/ContextInsulation.java index 9f114d5dc47..fb0af3233c2 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/spi/ContextInsulation.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/spi/ContextInsulation.java @@ -30,6 +30,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary ServiceConfiguration TestProvider TestProvider2 * @run main/othervm/policy=security.policy ContextInsulation */ diff --git a/jdk/test/java/rmi/server/RMIClassLoader/spi/DefaultProperty.java b/jdk/test/java/rmi/server/RMIClassLoader/spi/DefaultProperty.java index 15ce7cc4f79..59f89510620 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/spi/DefaultProperty.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/spi/DefaultProperty.java @@ -29,6 +29,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary ServiceConfiguration Foo * @run main/othervm/policy=security.policy DefaultProperty */ diff --git a/jdk/test/java/rmi/server/RMIClassLoader/spi/Installed.java b/jdk/test/java/rmi/server/RMIClassLoader/spi/Installed.java index 7e236d62316..194dd01268c 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/spi/Installed.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/spi/Installed.java @@ -29,6 +29,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary ServiceConfiguration TestProvider TestProvider2 * @run main/othervm/policy=security.policy Installed */ diff --git a/jdk/test/java/rmi/server/RMIClassLoader/spi/InvalidProperty.java b/jdk/test/java/rmi/server/RMIClassLoader/spi/InvalidProperty.java index dbc5a10bf5c..bdf73067c08 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/spi/InvalidProperty.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/spi/InvalidProperty.java @@ -29,6 +29,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary ServiceConfiguration * @run main/othervm/policy=security.policy InvalidProperty */ diff --git a/jdk/test/java/rmi/server/RMIClassLoader/spi/Property.java b/jdk/test/java/rmi/server/RMIClassLoader/spi/Property.java index 1d9f6947b7e..b13322773a8 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/spi/Property.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/spi/Property.java @@ -29,6 +29,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary ServiceConfiguration TestProvider * @run main/othervm/policy=security.policy Property */ diff --git a/jdk/test/java/rmi/server/RMIClassLoader/useCodebaseOnly/UseCodebaseOnly.java b/jdk/test/java/rmi/server/RMIClassLoader/useCodebaseOnly/UseCodebaseOnly.java index 77f6cbaae15..7f921994b84 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/useCodebaseOnly/UseCodebaseOnly.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/useCodebaseOnly/UseCodebaseOnly.java @@ -31,6 +31,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Receiver UseCodebaseOnly_Stub Foo Bar * @run main/othervm/policy=security.policy UseCodebaseOnly */ diff --git a/jdk/test/java/rmi/server/RMIClassLoader/useCodebaseOnlyDefault/UseCodebaseOnlyDefault.java b/jdk/test/java/rmi/server/RMIClassLoader/useCodebaseOnlyDefault/UseCodebaseOnlyDefault.java index 80dfd7d704a..6520d26bec1 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/useCodebaseOnlyDefault/UseCodebaseOnlyDefault.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/useCodebaseOnlyDefault/UseCodebaseOnlyDefault.java @@ -27,6 +27,7 @@ * @summary Tests proper parsing and defaulting of the * "java.rmi.server.useCodebaseOnly" property. * + * @modules java.rmi/sun.rmi.server * @run main/othervm UseCodebaseOnlyDefault true * @run main/othervm -Djava.rmi.server.useCodebaseOnly=xyzzy UseCodebaseOnlyDefault true * @run main/othervm -Djava.rmi.server.useCodebaseOnly UseCodebaseOnlyDefault true diff --git a/jdk/test/java/rmi/server/RMIClassLoader/useGetURLs/UseGetURLs.java b/jdk/test/java/rmi/server/RMIClassLoader/useGetURLs/UseGetURLs.java index c39b33036ba..486e44f5ee0 100644 --- a/jdk/test/java/rmi/server/RMIClassLoader/useGetURLs/UseGetURLs.java +++ b/jdk/test/java/rmi/server/RMIClassLoader/useGetURLs/UseGetURLs.java @@ -30,6 +30,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Dummy * @run main/othervm/policy=security.policy/timeout=120 UseGetURLs */ diff --git a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java index 5157f789c75..a9cb118ebea 100644 --- a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java +++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/UseCustomSocketFactory.java @@ -28,6 +28,10 @@ * @author Ann Wollrath * * @library ../../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Echo EchoImpl EchoImpl_Stub * @run main/othervm/policy=security.policy/timeout=360 UseCustomSocketFactory */ diff --git a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java index 774e823e857..1a39bc79b64 100644 --- a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java +++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/registry/UseCustomSocketFactory.java @@ -29,6 +29,10 @@ * @author Laird Dornin; code borrowed from Ann Wollrath * * @library ../../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Compress Hello HelloImpl HelloImpl_Stub * @run main/othervm/policy=security.policy/timeout=240 UseCustomSocketFactory */ diff --git a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java index 8995aa3f213..21ff49ce8ec 100644 --- a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java +++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/unicast/UseCustomSocketFactory.java @@ -29,6 +29,10 @@ * @author Ann Wollrath * * @library ../../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary RMID JavaVM Echo EchoImpl EchoImpl_Stub * @run main/othervm/policy=security.policy/timeout=120 UseCustomSocketFactory */ diff --git a/jdk/test/java/rmi/server/RemoteObject/verifyRemoteEquals/VerifyRemoteEquals.java b/jdk/test/java/rmi/server/RemoteObject/verifyRemoteEquals/VerifyRemoteEquals.java index 58621132e6b..2000502f6b3 100644 --- a/jdk/test/java/rmi/server/RemoteObject/verifyRemoteEquals/VerifyRemoteEquals.java +++ b/jdk/test/java/rmi/server/RemoteObject/verifyRemoteEquals/VerifyRemoteEquals.java @@ -29,6 +29,10 @@ * @author Laird Dornin * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm/timeout=40 VerifyRemoteEquals */ diff --git a/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java b/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java index 780e7e5c7f1..27530b99bae 100644 --- a/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java +++ b/jdk/test/java/rmi/server/UnicastRemoteObject/keepAliveDuringCall/KeepAliveDuringCall.java @@ -32,6 +32,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary JavaVM KeepAliveDuringCall_Stub * ShutdownMonitor Shutdown ShutdownImpl ShutdownImpl_Stub * @run main/othervm KeepAliveDuringCall diff --git a/jdk/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java b/jdk/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java index 62804feb6e0..f529f64ce0f 100644 --- a/jdk/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java +++ b/jdk/test/java/rmi/server/UnicastRemoteObject/unexportObject/UnexportLeak.java @@ -29,6 +29,10 @@ * @author Ann Wollrath * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary UnexportLeak_Stub Ping * @run main/othervm UnexportLeak */ diff --git a/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java b/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java index a268aab9509..63d744c8779 100644 --- a/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java +++ b/jdk/test/java/rmi/server/Unmarshal/checkUnmarshalOnStopThread/CheckUnmarshalOnStopThread.java @@ -31,6 +31,10 @@ * @author Laird Dornin * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary CheckUnmarshal CheckUnmarshalOnStopThread_Stub * PoisonPill RuntimeExceptionParameter * @run main/othervm/timeout=480 CheckUnmarshalOnStopThread diff --git a/jdk/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java b/jdk/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java index f15883ca806..0694209dffe 100644 --- a/jdk/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java +++ b/jdk/test/java/rmi/server/Unreferenced/finiteGCLatency/FiniteGCLatency.java @@ -35,6 +35,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary FiniteGCLatency_Stub * @run main/othervm/timeout=120 FiniteGCLatency */ diff --git a/jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java b/jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java index b488e762f9a..61121578c1e 100644 --- a/jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java +++ b/jdk/test/java/rmi/server/Unreferenced/leaseCheckInterval/LeaseCheckInterval.java @@ -37,6 +37,10 @@ * @author Peter Jones * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary JavaVM LeaseCheckInterval_Stub SelfTerminator * @run main/othervm LeaseCheckInterval */ diff --git a/jdk/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java b/jdk/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java index 05be7aed087..f468779c9a7 100644 --- a/jdk/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java +++ b/jdk/test/java/rmi/server/Unreferenced/unreferencedContext/UnreferencedContext.java @@ -39,6 +39,10 @@ * @author Laird Dornin * * @library ../../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary UnreferencedContext_Stub * @run main/othervm/timeout=120 UnreferencedContext */ diff --git a/jdk/test/java/rmi/server/clientStackTrace/ClientStackTrace.java b/jdk/test/java/rmi/server/clientStackTrace/ClientStackTrace.java index 9ef39f1529e..a4db112ab7b 100644 --- a/jdk/test/java/rmi/server/clientStackTrace/ClientStackTrace.java +++ b/jdk/test/java/rmi/server/clientStackTrace/ClientStackTrace.java @@ -28,6 +28,10 @@ * @author Laird Dornin * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary ClientStackTrace MyRemoteObject_Stub * @run main/othervm/policy=security.policy/timeout=120 ClientStackTrace */ diff --git a/jdk/test/java/rmi/server/getRemoteClass/GetRemoteClass.java b/jdk/test/java/rmi/server/getRemoteClass/GetRemoteClass.java index 8757bd1696f..ee2df053706 100644 --- a/jdk/test/java/rmi/server/getRemoteClass/GetRemoteClass.java +++ b/jdk/test/java/rmi/server/getRemoteClass/GetRemoteClass.java @@ -28,6 +28,10 @@ * @author Laird Dornin * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm GetRemoteClass */ diff --git a/jdk/test/java/rmi/server/useCustomRef/UseCustomRef.java b/jdk/test/java/rmi/server/useCustomRef/UseCustomRef.java index 23d784706ca..bbb271c8b6b 100644 --- a/jdk/test/java/rmi/server/useCustomRef/UseCustomRef.java +++ b/jdk/test/java/rmi/server/useCustomRef/UseCustomRef.java @@ -31,6 +31,10 @@ * 4180392 * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Ping UseCustomRef_Stub UseCustomRef_Skel * @run main/othervm/policy=security.policy/secure=java.rmi.RMISecurityManager/timeout=120 UseCustomRef * diff --git a/jdk/test/java/rmi/transport/checkFQDN/CheckFQDN.java b/jdk/test/java/rmi/transport/checkFQDN/CheckFQDN.java index deceb2795f9..b9c8f9861d1 100644 --- a/jdk/test/java/rmi/transport/checkFQDN/CheckFQDN.java +++ b/jdk/test/java/rmi/transport/checkFQDN/CheckFQDN.java @@ -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 @@ -33,6 +33,10 @@ * @author Laird Dornin * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary CheckFQDNClient CheckFQDN_Stub TellServerName * @run main/othervm/timeout=120 CheckFQDN */ diff --git a/jdk/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java b/jdk/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java index b32a8a51b0a..b54cbfb3d2c 100644 --- a/jdk/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java +++ b/jdk/test/java/rmi/transport/checkLeaseInfoLeak/CheckLeaseLeak.java @@ -28,6 +28,10 @@ * @author Laird Dornin * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary CheckLeaseLeak_Stub LeaseLeakClient LeaseLeak * @run main/othervm/timeout=240 CheckLeaseLeak * diff --git a/jdk/test/java/rmi/transport/closeServerSocket/CloseServerSocket.java b/jdk/test/java/rmi/transport/closeServerSocket/CloseServerSocket.java index 756924af39f..4209bdccc57 100644 --- a/jdk/test/java/rmi/transport/closeServerSocket/CloseServerSocket.java +++ b/jdk/test/java/rmi/transport/closeServerSocket/CloseServerSocket.java @@ -31,6 +31,10 @@ * @author Peter Jones * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm CloseServerSocket */ diff --git a/jdk/test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java b/jdk/test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java index bcd58a0a6a5..7cddcd7d436 100644 --- a/jdk/test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java +++ b/jdk/test/java/rmi/transport/dgcDeadLock/DGCDeadLock.java @@ -28,6 +28,10 @@ * @author Laird Dornin * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Test TestImpl TestImpl_Stub * @run main/othervm/policy=security.policy/timeout=360 DGCDeadLock */ diff --git a/jdk/test/java/rmi/transport/handshakeFailure/HandshakeFailure.java b/jdk/test/java/rmi/transport/handshakeFailure/HandshakeFailure.java index ed1ba8e0715..fc7341f7be3 100644 --- a/jdk/test/java/rmi/transport/handshakeFailure/HandshakeFailure.java +++ b/jdk/test/java/rmi/transport/handshakeFailure/HandshakeFailure.java @@ -31,6 +31,10 @@ * @author Peter Jones * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm HandshakeFailure */ diff --git a/jdk/test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java b/jdk/test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java index ba492f4194d..7a20f20234c 100644 --- a/jdk/test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java +++ b/jdk/test/java/rmi/transport/handshakeTimeout/HandshakeTimeout.java @@ -34,6 +34,10 @@ * @author Peter Jones * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm HandshakeTimeout */ diff --git a/jdk/test/java/rmi/transport/httpSocket/HttpSocketTest.java b/jdk/test/java/rmi/transport/httpSocket/HttpSocketTest.java index 032c4cdc532..8999c3d7310 100644 --- a/jdk/test/java/rmi/transport/httpSocket/HttpSocketTest.java +++ b/jdk/test/java/rmi/transport/httpSocket/HttpSocketTest.java @@ -27,6 +27,11 @@ * @author Dana Burns * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.proxy + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary HttpSocketTest HttpSocketTest_Stub * @run main/othervm/policy=security.policy HttpSocketTest */ diff --git a/jdk/test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java b/jdk/test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java index 51dc4c849b4..2113178bc44 100644 --- a/jdk/test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java +++ b/jdk/test/java/rmi/transport/pinClientSocketFactory/PinClientSocketFactory.java @@ -32,6 +32,10 @@ * @author Peter Jones * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm -Dsun.rmi.transport.connectionTimeout=2000 * PinClientSocketFactory diff --git a/jdk/test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java b/jdk/test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java index 4080bfa7e74..38c2e2a0042 100644 --- a/jdk/test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java +++ b/jdk/test/java/rmi/transport/rapidExportUnexport/RapidExportUnexport.java @@ -32,6 +32,10 @@ * @author Peter Jones * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm RapidExportUnexport */ diff --git a/jdk/test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java b/jdk/test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java index e5e7d80b49f..6fce16108f1 100644 --- a/jdk/test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java +++ b/jdk/test/java/rmi/transport/reuseDefaultPort/ReuseDefaultPort.java @@ -34,6 +34,10 @@ * @author Peter Jones * * @library ../../testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm ReuseDefaultPort */ diff --git a/jdk/test/java/security/BasicPermission/Wildcard.java b/jdk/test/java/security/BasicPermission/Wildcard.java index 3b6d1c58eea..9a7441defb2 100644 --- a/jdk/test/java/security/BasicPermission/Wildcard.java +++ b/jdk/test/java/security/BasicPermission/Wildcard.java @@ -33,6 +33,8 @@ import javax.net.ssl.SSLPermission; * @summary Check that BasicPermission subclasses don't throw exception if name * contains wildcard character ("*") but does not signify a * wildcard match + * @modules java.base/com.sun.net.ssl + * java.sql */ public class Wildcard { diff --git a/jdk/test/java/security/KeyPairGenerator/SolarisShortDSA.java b/jdk/test/java/security/KeyPairGenerator/SolarisShortDSA.java index 69ed492ed54..53195962e17 100644 --- a/jdk/test/java/security/KeyPairGenerator/SolarisShortDSA.java +++ b/jdk/test/java/security/KeyPairGenerator/SolarisShortDSA.java @@ -25,6 +25,7 @@ * @test * @bug 7081411 * @summary DSA keypair generation affected by Solaris bug + * @modules java.base/sun.security.provider */ import java.security.KeyPair; diff --git a/jdk/test/java/security/PermissionCollection/Concurrent.java b/jdk/test/java/security/PermissionCollection/Concurrent.java index 3c61c046486..81915141d0c 100644 --- a/jdk/test/java/security/PermissionCollection/Concurrent.java +++ b/jdk/test/java/security/PermissionCollection/Concurrent.java @@ -25,6 +25,7 @@ * @test * @bug 4671598 * @summary PermissionCollection is not properly synchronized + * @modules java.rmi/com.sun.rmi.rmid */ import java.security.*; // AllPermission, BasicPermission, Permissions diff --git a/jdk/test/java/security/Policy/GetInstance/GetInstance.java b/jdk/test/java/security/Policy/GetInstance/GetInstance.java index 858ae081495..d399db20f71 100644 --- a/jdk/test/java/security/Policy/GetInstance/GetInstance.java +++ b/jdk/test/java/security/Policy/GetInstance/GetInstance.java @@ -26,6 +26,7 @@ * @bug 5100561 * @bug 6273812 * @summary Can not explicitly create a java.security.Policy object from a file + * @modules java.base/sun.security.provider * @build GetInstancePolicySpi GetInstanceProvider * @run main/othervm/policy=GetInstance.policy GetInstance */ @@ -34,7 +35,6 @@ import java.security.*; import java.io.File; import java.net.URI; -import sun.net.www.ParseUtil; public class GetInstance { diff --git a/jdk/test/java/security/Policy/PolicyProvider/UseSystemClassLoader.java b/jdk/test/java/security/Policy/PolicyProvider/UseSystemClassLoader.java index 69bd318e76b..7c33b1085d2 100644 --- a/jdk/test/java/security/Policy/PolicyProvider/UseSystemClassLoader.java +++ b/jdk/test/java/security/Policy/PolicyProvider/UseSystemClassLoader.java @@ -30,6 +30,7 @@ import java.security.Security; * @test * @bug 8075706 * @summary Check that a custom policy provider can be loaded from the classpath + * @modules java.base/sun.security.provider * @run main/othervm UseSystemClassLoader CUSTOM * @run main/othervm UseSystemClassLoader DEFAULT * @run main/othervm UseSystemClassLoader NOT_AVAIL diff --git a/jdk/test/java/security/ProtectionDomain/PreserveCombinerTest.java b/jdk/test/java/security/ProtectionDomain/PreserveCombinerTest.java index 596d2c162f2..9609948438d 100644 --- a/jdk/test/java/security/ProtectionDomain/PreserveCombinerTest.java +++ b/jdk/test/java/security/ProtectionDomain/PreserveCombinerTest.java @@ -34,6 +34,7 @@ import sun.misc.SharedSecrets; * @summary Make sure that JavaSecurityAccess.doIntersectionPrivilege() * is not dropping the information about the domain combiner of * the stack ACC + * @modules java.base/sun.misc */ public class PreserveCombinerTest { diff --git a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/DisableRevocation.java b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/DisableRevocation.java index 9ce3ef46ac1..b72550e4c5d 100644 --- a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/DisableRevocation.java +++ b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/DisableRevocation.java @@ -32,6 +32,7 @@ * @bug 6852744 * @summary PIT b61: PKI test suite fails because self signed certificates * are being rejected + * @modules java.base/sun.security.util * @run main/othervm DisableRevocation subca * @run main/othervm DisableRevocation subci * @run main/othervm DisableRevocation alice diff --git a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java index 75bf2ec5a02..87d8524f652 100644 --- a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java +++ b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/KeyUsageMatters.java @@ -32,6 +32,7 @@ * @bug 6852744 * @summary PIT b61: PKI test suite fails because self signed certificates * are being rejected + * @modules java.base/sun.security.util * @run main/othervm KeyUsageMatters subca * @run main/othervm KeyUsageMatters subci * @run main/othervm KeyUsageMatters alice diff --git a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/StatusLoopDependency.java b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/StatusLoopDependency.java index 6d0b24bef32..65242394162 100644 --- a/jdk/test/java/security/cert/CertPathBuilder/selfIssued/StatusLoopDependency.java +++ b/jdk/test/java/security/cert/CertPathBuilder/selfIssued/StatusLoopDependency.java @@ -32,6 +32,7 @@ * @bug 6852744 * @summary PIT b61: PKI test suite fails because self signed certificates * are being rejected + * @modules java.base/sun.security.util * @run main/othervm StatusLoopDependency subca * @run main/othervm StatusLoopDependency subci * @run main/othervm StatusLoopDependency alice diff --git a/jdk/test/java/security/cert/CertPathValidator/trustAnchor/ValidateNC.java b/jdk/test/java/security/cert/CertPathValidator/trustAnchor/ValidateNC.java index 6851ef6d05b..482c930734a 100644 --- a/jdk/test/java/security/cert/CertPathValidator/trustAnchor/ValidateNC.java +++ b/jdk/test/java/security/cert/CertPathValidator/trustAnchor/ValidateNC.java @@ -28,6 +28,7 @@ * CertPathValidator.validate() and CertPathBuilder.build() throw an * InvalidAlgorithmParameterException if any of the TrustAnchors specified * contain nameConstraints + * @modules java.base/sun.security.util */ import java.io.File; import java.io.FileInputStream; diff --git a/jdk/test/java/security/cert/CertificateRevokedException/Basic.java b/jdk/test/java/security/cert/CertificateRevokedException/Basic.java index 3485aec80d7..2ca62248e31 100644 --- a/jdk/test/java/security/cert/CertificateRevokedException/Basic.java +++ b/jdk/test/java/security/cert/CertificateRevokedException/Basic.java @@ -25,6 +25,7 @@ * @test * @bug 4946388 * @summary Unit test for CertificateRevokedException + * @modules java.base/sun.security.x509 */ import java.io.ByteArrayInputStream; diff --git a/jdk/test/java/text/Bidi/Bug6850113.java b/jdk/test/java/text/Bidi/Bug6850113.java index 0082c6f5184..063c347c685 100644 --- a/jdk/test/java/text/Bidi/Bug6850113.java +++ b/jdk/test/java/text/Bidi/Bug6850113.java @@ -24,6 +24,7 @@ * @test * @bug 6850113 * @summary Verify the return value of digit() for some digits. + * @modules java.base/sun.text.normalizer * @compile -XDignore.symbol.file=true Bug6850113.java * @run main Bug6850113 */ diff --git a/jdk/test/java/util/Calendar/Bug8007038.java b/jdk/test/java/util/Calendar/Bug8007038.java index e197e1266d7..b8ef498d904 100644 --- a/jdk/test/java/util/Calendar/Bug8007038.java +++ b/jdk/test/java/util/Calendar/Bug8007038.java @@ -26,6 +26,7 @@ * @bug 8007038 * @summary Verify ArrayIndexOutOfBoundsException is not thrown on * on calling localizedDateTime().print() with JapaneseChrono + * @modules java.base/sun.util.locale.provider * @compile -XDignore.symbol.file Bug8007038.java * @run main Bug8007038 */ diff --git a/jdk/test/java/util/Calendar/CldrFormatNamesTest.java b/jdk/test/java/util/Calendar/CldrFormatNamesTest.java index d5e39514efc..7454780eac0 100644 --- a/jdk/test/java/util/Calendar/CldrFormatNamesTest.java +++ b/jdk/test/java/util/Calendar/CldrFormatNamesTest.java @@ -24,9 +24,10 @@ /* * @test * @bug 8004489 8006509 + * @summary Unit test for CLDR FormatData resources + * @modules java.base/sun.util.locale.provider * @compile -XDignore.symbol.file CldrFormatNamesTest.java * @run main/othervm -Djava.locale.providers=CLDR CldrFormatNamesTest - * @summary Unit test for CLDR FormatData resources */ import java.util.*; diff --git a/jdk/test/java/util/Formatter/Basic.java b/jdk/test/java/util/Formatter/Basic.java index 31fce5dd4e2..4287f1bc2d8 100644 --- a/jdk/test/java/util/Formatter/Basic.java +++ b/jdk/test/java/util/Formatter/Basic.java @@ -28,6 +28,7 @@ * 6344623 6369500 6534606 6282094 6286592 6476425 5063507 6469160 6476168 * 8059175 * + * @modules java.base/sun.misc * @run shell/timeout=240 Basic.sh */ diff --git a/jdk/test/java/util/Locale/Bug6989440.java b/jdk/test/java/util/Locale/Bug6989440.java index b675d495775..42b77d58c29 100644 --- a/jdk/test/java/util/Locale/Bug6989440.java +++ b/jdk/test/java/util/Locale/Bug6989440.java @@ -26,6 +26,7 @@ * @bug 6989440 * @summary Verify ConcurrentModificationException is not thrown with multiple * thread accesses. + * @modules java.base/sun.util.locale.provider * @compile -XDignore.symbol.file=true Bug6989440.java * @run main Bug6989440 */ diff --git a/jdk/test/java/util/Locale/Bug8004240.java b/jdk/test/java/util/Locale/Bug8004240.java index 84f291b93ba..6725c792cb7 100644 --- a/jdk/test/java/util/Locale/Bug8004240.java +++ b/jdk/test/java/util/Locale/Bug8004240.java @@ -25,6 +25,7 @@ * @test * @bug 8004240 * @summary Verify that getAdapterPreference returns an unmodifiable list. + * @modules java.base/sun.util.locale.provider * @compile -XDignore.symbol.file Bug8004240.java * @run main Bug8004240 */ diff --git a/jdk/test/java/util/jar/JarInputStream/ExtraFileInMetaInf.java b/jdk/test/java/util/jar/JarInputStream/ExtraFileInMetaInf.java index 6a062c6c2ab..45865ec0b8f 100644 --- a/jdk/test/java/util/jar/JarInputStream/ExtraFileInMetaInf.java +++ b/jdk/test/java/util/jar/JarInputStream/ExtraFileInMetaInf.java @@ -23,8 +23,10 @@ /* * @test - * @bug 8021788 - * @summary JarInputStream doesn't provide certificates for some file under META-INF + * @bug 8021788 + * @summary JarInputStream doesn't provide certificates for some file under META-INF + * @modules java.base/sun.security.tools.keytool + * jdk.jartool/sun.security.tools.jarsigner */ import java.util.jar.*; diff --git a/jdk/test/java/util/jar/Manifest/CreateManifest.java b/jdk/test/java/util/jar/Manifest/CreateManifest.java index 87a2b03b9a0..6655089b56d 100644 --- a/jdk/test/java/util/jar/Manifest/CreateManifest.java +++ b/jdk/test/java/util/jar/Manifest/CreateManifest.java @@ -25,6 +25,7 @@ * @test * @bug 7148584 * @summary Jar tools fails to generate manifest correctly when boundary condition hit + * @modules jdk.jartool/sun.tools.jar * @compile -XDignore.symbol.file=true CreateManifest.java * @run main CreateManifest */ diff --git a/jdk/test/java/util/logging/CustomLogManagerTest.java b/jdk/test/java/util/logging/CustomLogManagerTest.java index b8f0bfa7f3c..8cf5d0115ee 100644 --- a/jdk/test/java/util/logging/CustomLogManagerTest.java +++ b/jdk/test/java/util/logging/CustomLogManagerTest.java @@ -32,6 +32,7 @@ import sun.util.logging.PlatformLogger; * @bug 8005615 8006104 * @summary Add loggers to custom log manager * + * @modules java.base/sun.util.logging * @compile -XDignore.symbol.file CustomLogManagerTest.java CustomLogManager.java * @run main/othervm -Djava.util.logging.manager=CustomLogManager CustomLogManagerTest */ diff --git a/jdk/test/java/util/logging/LogManager/RootLogger/setLevel/TestRootLoggerLevel.java b/jdk/test/java/util/logging/LogManager/RootLogger/setLevel/TestRootLoggerLevel.java index 58e812ce058..1d34511c84d 100644 --- a/jdk/test/java/util/logging/LogManager/RootLogger/setLevel/TestRootLoggerLevel.java +++ b/jdk/test/java/util/logging/LogManager/RootLogger/setLevel/TestRootLoggerLevel.java @@ -35,6 +35,7 @@ import java.util.logging.LoggingPermission; * @test * @bug 8026499 * @summary checks that Logger.getLogger("").setLevel() is working correctly. + * @modules java.base/sun.util.logging * @build TestRootLoggerLevel * @run main/othervm -Dtest.security=on TestRootLoggerLevel * @run main/othervm -Dtest.security=off TestRootLoggerLevel diff --git a/jdk/test/java/util/logging/LogManagerAppContextDeadlock.java b/jdk/test/java/util/logging/LogManagerAppContextDeadlock.java index 3e4918e5fee..4b7c7a41bfe 100644 --- a/jdk/test/java/util/logging/LogManagerAppContextDeadlock.java +++ b/jdk/test/java/util/logging/LogManagerAppContextDeadlock.java @@ -41,6 +41,7 @@ import java.util.logging.Logger; * @bug 8065991 * @summary check that when LogManager is initialized, a deadlock similar * to that described in 8065709 will not occur. + * @modules java.base/sun.misc * @run main/othervm LogManagerAppContextDeadlock UNSECURE * @run main/othervm LogManagerAppContextDeadlock SECURE * diff --git a/jdk/test/java/util/logging/LoggingDeadlock4.java b/jdk/test/java/util/logging/LoggingDeadlock4.java index 63c51bf4b59..1fa50d356a2 100644 --- a/jdk/test/java/util/logging/LoggingDeadlock4.java +++ b/jdk/test/java/util/logging/LoggingDeadlock4.java @@ -26,6 +26,7 @@ * @bug 6977677 8004928 * @summary Deadlock between LogManager. and Logger.getLogger() * @author Daniel D. Daugherty + * @modules java.base/sun.util.logging * @compile -XDignore.symbol.file LoggingDeadlock4.java * @run main/othervm/timeout=15 LoggingDeadlock4 */ diff --git a/jdk/test/java/util/logging/RootLogger/RootLevelInConfigFile.java b/jdk/test/java/util/logging/RootLogger/RootLevelInConfigFile.java index f7ca5ce6d55..0a78f8d6911 100644 --- a/jdk/test/java/util/logging/RootLogger/RootLevelInConfigFile.java +++ b/jdk/test/java/util/logging/RootLogger/RootLevelInConfigFile.java @@ -42,6 +42,7 @@ import sun.misc.SharedSecrets; * @bug 8030850 * @summary Tests that setting .level=FINEST for the root logger in logging * configuration file does work. + * @modules java.base/sun.misc * @run main/othervm RootLevelInConfigFile * * @author danielfuchs diff --git a/jdk/test/java/util/logging/SimpleLogManager.java b/jdk/test/java/util/logging/SimpleLogManager.java index 1e1da7919a5..c6e0b48e237 100644 --- a/jdk/test/java/util/logging/SimpleLogManager.java +++ b/jdk/test/java/util/logging/SimpleLogManager.java @@ -31,6 +31,7 @@ import sun.util.logging.PlatformLogger; * @summary A LogManager subclass overrides its own implementation of named * logger (see the subclassing information in the Logger class specification) * + * @modules java.base/sun.util.logging * @compile -XDignore.symbol.file CustomLogManager.java SimpleLogManager.java * @run main/othervm -Djava.util.logging.manager=SimpleLogManager SimpleLogManager */ diff --git a/jdk/test/java/util/logging/TestAppletLoggerContext.java b/jdk/test/java/util/logging/TestAppletLoggerContext.java index f6cd0e2ce3e..f534d370745 100644 --- a/jdk/test/java/util/logging/TestAppletLoggerContext.java +++ b/jdk/test/java/util/logging/TestAppletLoggerContext.java @@ -42,6 +42,7 @@ import sun.misc.SharedSecrets; * @summary NPE when using Logger.getAnonymousLogger or * LogManager.getLogManager().getLogger * + * @modules java.base/sun.misc * @run main/othervm -Dtest.security=off TestAppletLoggerContext LoadingApplet * @run main/othervm -Dtest.security=on TestAppletLoggerContext LoadingApplet * @run main/othervm -Dtest.security=off TestAppletLoggerContext LoadingMain diff --git a/jdk/test/java/util/logging/TestGetLoggerNPE.java b/jdk/test/java/util/logging/TestGetLoggerNPE.java index 55ed6e0a70f..6bc2a6c95a5 100644 --- a/jdk/test/java/util/logging/TestGetLoggerNPE.java +++ b/jdk/test/java/util/logging/TestGetLoggerNPE.java @@ -35,6 +35,7 @@ import sun.misc.SharedSecrets; * * @summary NPE with logging while launching webstart * + * @modules java.base/sun.misc * @build TestGetLoggerNPE * @run main/othervm TestGetLoggerNPE getLogger * @run main/othervm TestGetLoggerNPE getLogManager diff --git a/jdk/test/java/util/logging/TestLoggerWeakRefLeak.java b/jdk/test/java/util/logging/TestLoggerWeakRefLeak.java index 3f6d403cba7..06c048d991f 100644 --- a/jdk/test/java/util/logging/TestLoggerWeakRefLeak.java +++ b/jdk/test/java/util/logging/TestLoggerWeakRefLeak.java @@ -38,7 +38,8 @@ import sun.tools.attach.HotSpotVirtualMachine; * @bug 6942989 * @summary Check for WeakReference leak in Logger and anonymous Logger objects * @library /lib/testlibrary - * @build jdk.testlibrary.* + * @modules jdk.attach/sun.tools.attach + * @build jdk.testlibrary.ProcessTools * @run main/othervm TestLoggerWeakRefLeak Logger * @run main/othervm TestLoggerWeakRefLeak AnonymousLogger */ diff --git a/jdk/test/java/util/logging/TestMainAppContext.java b/jdk/test/java/util/logging/TestMainAppContext.java index 28c3fc1428d..622600c76cb 100644 --- a/jdk/test/java/util/logging/TestMainAppContext.java +++ b/jdk/test/java/util/logging/TestMainAppContext.java @@ -30,6 +30,7 @@ import sun.awt.SunToolkit; * @bug 8026404 * @summary checks that calling getLogger() from a Thread whose ThreadGroup is * a child of the main root group doesn't throw an exception. + * @modules java.desktop/sun.awt * @build TestMainAppContext * @run main/othervm TestMainAppContext * @author danielfuchs diff --git a/jdk/test/javax/net/ssl/FixingJavadocs/ComURLNulls.java b/jdk/test/javax/net/ssl/FixingJavadocs/ComURLNulls.java index e0dc82a2dc1..9ede06d1f49 100644 --- a/jdk/test/javax/net/ssl/FixingJavadocs/ComURLNulls.java +++ b/jdk/test/javax/net/ssl/FixingJavadocs/ComURLNulls.java @@ -27,6 +27,8 @@ * @summary Need to revisit the javadocs for JSSE, especially the * promoted classes, and HttpsURLConnection.getCipherSuite throws * NullPointerException + * @modules java.base/com.sun.net.ssl + * java.base/com.sun.net.ssl.internal.www.protocol.https * @run main/othervm ComURLNulls * * SunJSSE does not support dynamic system properties, no way to re-use diff --git a/jdk/test/javax/net/ssl/GetInstance.java b/jdk/test/javax/net/ssl/GetInstance.java index 2ffdad9ac02..6aec679c127 100644 --- a/jdk/test/javax/net/ssl/GetInstance.java +++ b/jdk/test/javax/net/ssl/GetInstance.java @@ -27,6 +27,7 @@ * @summary verify getInstance() works using Provider.getService() * Export "PKIX" as the standard algorithm name of KeyManagerFactory * @author Andreas Sterbenz + * @modules java.base/com.sun.net.ssl */ import java.security.*; diff --git a/jdk/test/javax/net/ssl/SSLSession/CheckMyTrustedKeystore.java b/jdk/test/javax/net/ssl/SSLSession/CheckMyTrustedKeystore.java index 422d88debd1..9d7b8172a1e 100644 --- a/jdk/test/javax/net/ssl/SSLSession/CheckMyTrustedKeystore.java +++ b/jdk/test/javax/net/ssl/SSLSession/CheckMyTrustedKeystore.java @@ -29,6 +29,7 @@ * @bug 4329114 * @summary Need better way of reflecting the reason when a chain is * rejected as untrusted. + * @modules java.base/com.sun.net.ssl * @ignore JSSE supports algorithm constraints with CR 6916074, * need to update this test case in JDK 7 soon * @run main/othervm CheckMyTrustedKeystore diff --git a/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorer.java b/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorer.java index 439f3f2fd90..3ef485b6982 100644 --- a/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorer.java +++ b/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorer.java @@ -31,6 +31,7 @@ * @bug 7068321 * @summary Support TLS Server Name Indication (SNI) Extension in JSSE Server * @library ../SSLEngine ../templates + * @modules java.base/sun.misc * @build SSLEngineService SSLCapabilities SSLExplorer * @run main/othervm SSLEngineExplorer SSLv2Hello,SSLv3 * @run main/othervm SSLEngineExplorer SSLv3 diff --git a/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerMatchedSNI.java b/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerMatchedSNI.java index b9854dd3e94..ccfdbac0c64 100644 --- a/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerMatchedSNI.java +++ b/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerMatchedSNI.java @@ -31,6 +31,7 @@ * @bug 7068321 * @summary Support TLS Server Name Indication (SNI) Extension in JSSE Server * @library ../SSLEngine ../templates + * @modules java.base/sun.misc * @build SSLEngineService SSLCapabilities SSLExplorer * @run main/othervm SSLEngineExplorerMatchedSNI www.example.com * www\.example\.com diff --git a/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerUnmatchedSNI.java b/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerUnmatchedSNI.java index ff8678ba6a8..8ae4b68e3fe 100644 --- a/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerUnmatchedSNI.java +++ b/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerUnmatchedSNI.java @@ -31,6 +31,7 @@ * @bug 7068321 * @summary Support TLS Server Name Indication (SNI) Extension in JSSE Server * @library ../SSLEngine ../templates + * @modules java.base/sun.misc * @build SSLEngineService SSLCapabilities SSLExplorer * @run main/othervm SSLEngineExplorerUnmatchedSNI www.example.com * www\.example\.org diff --git a/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerWithCli.java b/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerWithCli.java index f9888839929..7c8e6a275c9 100644 --- a/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerWithCli.java +++ b/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerWithCli.java @@ -31,6 +31,7 @@ * @bug 7068321 * @summary Support TLS Server Name Indication (SNI) Extension in JSSE Server * @library ../SSLEngine ../templates + * @modules java.base/sun.misc * @build SSLEngineService SSLCapabilities SSLExplorer * @run main/othervm SSLEngineExplorerWithCli */ diff --git a/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerWithSrv.java b/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerWithSrv.java index 0517a7750aa..f0baeefbf53 100644 --- a/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerWithSrv.java +++ b/jdk/test/javax/net/ssl/ServerName/SSLEngineExplorerWithSrv.java @@ -31,6 +31,7 @@ * @bug 7068321 * @summary Support TLS Server Name Indication (SNI) Extension in JSSE Server * @library ../SSLEngine ../templates + * @modules java.base/sun.misc * @build SSLEngineService SSLCapabilities SSLExplorer * @run main/othervm SSLEngineExplorerWithSrv */ diff --git a/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorer.java b/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorer.java index 887b624fda4..f91c6c2365b 100644 --- a/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorer.java +++ b/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorer.java @@ -31,6 +31,7 @@ * @bug 7068321 * @summary Support TLS Server Name Indication (SNI) Extension in JSSE Server * @library ../templates + * @modules java.base/sun.misc * @build SSLCapabilities SSLExplorer * @run main/othervm SSLSocketExplorer SSLv2Hello,SSLv3 * @run main/othervm SSLSocketExplorer SSLv3 diff --git a/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerFailure.java b/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerFailure.java index aaf8d299486..9e12e9b4b2f 100644 --- a/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerFailure.java +++ b/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerFailure.java @@ -31,6 +31,7 @@ * @bug 7068321 * @summary Support TLS Server Name Indication (SNI) Extension in JSSE Server * @library ../templates + * @modules java.base/sun.misc * @build SSLCapabilities SSLExplorer * @run main/othervm SSLSocketExplorerFailure SSLv2Hello,SSLv3 * @run main/othervm SSLSocketExplorerFailure SSLv3 diff --git a/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerMatchedSNI.java b/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerMatchedSNI.java index 724a37e1a80..bde4f6cc0d9 100644 --- a/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerMatchedSNI.java +++ b/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerMatchedSNI.java @@ -31,6 +31,7 @@ * @bug 7068321 * @summary Support TLS Server Name Indication (SNI) Extension in JSSE Server * @library ../templates + * @modules java.base/sun.misc * @build SSLCapabilities SSLExplorer * @run main/othervm SSLSocketExplorerMatchedSNI www.example.com * www\.example\.com diff --git a/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerUnmatchedSNI.java b/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerUnmatchedSNI.java index 732e0cf3097..a266f5f4beb 100644 --- a/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerUnmatchedSNI.java +++ b/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerUnmatchedSNI.java @@ -31,6 +31,7 @@ * @bug 7068321 * @summary Support TLS Server Name Indication (SNI) Extension in JSSE Server * @library ../templates + * @modules java.base/sun.misc * @build SSLCapabilities SSLExplorer * @run main/othervm SSLSocketExplorerUnmatchedSNI www.example.com * www\.example\.org diff --git a/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerWithCliSNI.java b/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerWithCliSNI.java index 8f2b7816864..183a23fa260 100644 --- a/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerWithCliSNI.java +++ b/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerWithCliSNI.java @@ -31,6 +31,7 @@ * @bug 7068321 * @summary Support TLS Server Name Indication (SNI) Extension in JSSE Server * @library ../templates + * @modules java.base/sun.misc * @build SSLCapabilities SSLExplorer * @run main/othervm SSLSocketExplorerWithCliSNI */ diff --git a/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerWithSrvSNI.java b/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerWithSrvSNI.java index f026f32e781..20b8a6991c7 100644 --- a/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerWithSrvSNI.java +++ b/jdk/test/javax/net/ssl/ServerName/SSLSocketExplorerWithSrvSNI.java @@ -31,6 +31,7 @@ * @bug 7068321 * @summary Support TLS Server Name Indication (SNI) Extension in JSSE Server * @library ../templates + * @modules java.base/sun.misc * @build SSLCapabilities SSLExplorer * @run main/othervm SSLSocketExplorerWithSrvSNI */ diff --git a/jdk/test/javax/net/ssl/TLS/TestJSSE.java b/jdk/test/javax/net/ssl/TLS/TestJSSE.java index 756a5226f96..4bc99e6a547 100644 --- a/jdk/test/javax/net/ssl/TLS/TestJSSE.java +++ b/jdk/test/javax/net/ssl/TLS/TestJSSE.java @@ -28,6 +28,8 @@ import java.security.Security; * @test * @bug 8049429 * @library ../../../../lib/testlibrary/ + * @modules java.management + * jdk.crypto.ec/sun.security.ec * @build jdk.testlibrary.Utils * @compile CipherTestUtils.java JSSEClient.java JSSEServer.java * @summary Test that all cipher suites work in all versions and all client diff --git a/jdk/test/javax/net/ssl/TLSv12/ShortRSAKeyGCM.java b/jdk/test/javax/net/ssl/TLSv12/ShortRSAKeyGCM.java index 2d2b94b6504..6c02652f7d9 100644 --- a/jdk/test/javax/net/ssl/TLSv12/ShortRSAKeyGCM.java +++ b/jdk/test/javax/net/ssl/TLSv12/ShortRSAKeyGCM.java @@ -32,6 +32,7 @@ * @test * @bug 7030966 * @summary Support AEAD CipherSuites + * @modules java.base/sun.misc * @run main/othervm ShortRSAKeyGCM PKIX TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 * @run main/othervm ShortRSAKeyGCM PKIX TLS_RSA_WITH_AES_128_GCM_SHA256 * @run main/othervm ShortRSAKeyGCM PKIX TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 diff --git a/jdk/test/javax/script/VersionTest.java b/jdk/test/javax/script/VersionTest.java index 40f5c83037a..485f6aaea1a 100644 --- a/jdk/test/javax/script/VersionTest.java +++ b/jdk/test/javax/script/VersionTest.java @@ -25,6 +25,8 @@ * @test * @bug 6346729 6705893 * @summary Create JavaScript engine and check language and engine version + * @modules java.scripting + * jdk.scripting.nashorn/jdk.nashorn.internal.runtime */ import javax.script.*; diff --git a/jdk/test/javax/security/auth/Subject/SubjectNullTests.java b/jdk/test/javax/security/auth/Subject/SubjectNullTests.java index c473ea8f30b..29b1a667734 100644 --- a/jdk/test/javax/security/auth/Subject/SubjectNullTests.java +++ b/jdk/test/javax/security/auth/Subject/SubjectNullTests.java @@ -24,6 +24,9 @@ /* * @test * @bug 8015081 + * @modules java.base/sun.misc + * java.management + * java.security.jgss * @compile Subject.java * @compile SubjectNullTests.java * @build SubjectNullTests diff --git a/jdk/test/javax/security/auth/kerberos/StandardNames.java b/jdk/test/javax/security/auth/kerberos/StandardNames.java index 40590f6d080..42467041836 100644 --- a/jdk/test/javax/security/auth/kerberos/StandardNames.java +++ b/jdk/test/javax/security/auth/kerberos/StandardNames.java @@ -25,6 +25,7 @@ * @test * @bug 8035986 * @summary KerberosKey algorithm names are not specified + * @modules java.security.jgss/sun.security.krb5 */ import sun.security.krb5.EncryptedData; diff --git a/jdk/test/javax/security/auth/login/Configuration/GetInstanceSecurity.java b/jdk/test/javax/security/auth/login/Configuration/GetInstanceSecurity.java index a2ab311dc18..ebd58059e52 100644 --- a/jdk/test/javax/security/auth/login/Configuration/GetInstanceSecurity.java +++ b/jdk/test/javax/security/auth/login/Configuration/GetInstanceSecurity.java @@ -34,8 +34,6 @@ import java.net.URI; import java.security.*; import javax.security.auth.login.*; -import sun.net.www.ParseUtil; - public class GetInstanceSecurity { private static final String JAVA_CONFIG = "JavaLoginConfig"; diff --git a/jdk/test/javax/security/auth/x500/X500Principal/NameFormat.java b/jdk/test/javax/security/auth/x500/X500Principal/NameFormat.java index 6d08a8fd0cf..2503b36f30c 100644 --- a/jdk/test/javax/security/auth/x500/X500Principal/NameFormat.java +++ b/jdk/test/javax/security/auth/x500/X500Principal/NameFormat.java @@ -25,6 +25,7 @@ * @test * @bug 4505980 5109882 7049963 7090565 * @summary X500Principal input name parsing issues and wrong exception thrown + * @modules java.base/sun.security.x509 * @run main/othervm -Djava.security.debug=x509,ava NameFormat * * The debug=ava above must be set in order to check for escaped hex chars. diff --git a/jdk/test/javax/sql/testng/TEST.properties b/jdk/test/javax/sql/testng/TEST.properties index 97bfe7c5e31..cb97c160507 100644 --- a/jdk/test/javax/sql/testng/TEST.properties +++ b/jdk/test/javax/sql/testng/TEST.properties @@ -2,3 +2,6 @@ TestNG.dirs= . othervm.dirs= . lib.dirs = /java/sql/testng +modules = java.sql.rowset/com.sun.rowset \ + java.sql.rowset/com.sun.rowset.internal \ + java.sql.rowset/com.sun.rowset.providers diff --git a/jdk/test/javax/xml/bind/xjc/8029837/PreParseGrammarTest.java b/jdk/test/javax/xml/bind/xjc/8029837/PreParseGrammarTest.java index ae626504651..76f7b89deca 100644 --- a/jdk/test/javax/xml/bind/xjc/8029837/PreParseGrammarTest.java +++ b/jdk/test/javax/xml/bind/xjc/8029837/PreParseGrammarTest.java @@ -26,6 +26,10 @@ * @bug 8029837 * @summary Test simulates the partial call to xjc ant task that fails with * NullPointer exception + * @modules java.xml/com.sun.org.apache.xerces.internal.parsers + * @modules java.xml/com.sun.org.apache.xerces.internal.xni + * @modules java.xml/com.sun.org.apache.xerces.internal.xni.grammars + * @modules java.xml/com.sun.org.apache.xerces.internal.xni.parser * @run main/othervm PreParseGrammarTest */ diff --git a/jdk/test/javax/xml/crypto/dsig/GenerationTests.java b/jdk/test/javax/xml/crypto/dsig/GenerationTests.java index 945b1cdb802..a8627615e9a 100644 --- a/jdk/test/javax/xml/crypto/dsig/GenerationTests.java +++ b/jdk/test/javax/xml/crypto/dsig/GenerationTests.java @@ -26,6 +26,9 @@ * @bug 4635230 6283345 6303830 6824440 6867348 7094155 8038184 8038349 8046949 * 8046724 8079693 * @summary Basic unit tests for generating XML Signatures with JSR 105 + * @modules java.base/sun.security.util + * java.base/sun.security.x509 + * java.xml.crypto/org.jcp.xml.dsig.internal.dom * @compile -XDignore.symbol.file KeySelectors.java SignatureValidator.java * X509KeySelector.java GenerationTests.java * @run main/othervm GenerationTests diff --git a/jdk/test/javax/xml/crypto/dsig/ValidationTests.java b/jdk/test/javax/xml/crypto/dsig/ValidationTests.java index 5413d28d215..5695ea90860 100644 --- a/jdk/test/javax/xml/crypto/dsig/ValidationTests.java +++ b/jdk/test/javax/xml/crypto/dsig/ValidationTests.java @@ -25,6 +25,9 @@ * @test * @bug 4635230 6365103 6366054 6824440 7131084 8046724 8079693 * @summary Basic unit tests for validating XML Signatures with JSR 105 + * @modules java.base/sun.security.util + * java.base/sun.security.x509 + * java.xml.crypto/org.jcp.xml.dsig.internal.dom * @compile -XDignore.symbol.file KeySelectors.java SignatureValidator.java * X509KeySelector.java ValidationTests.java * @run main/othervm ValidationTests diff --git a/jdk/test/javax/xml/crypto/dsig/keyinfo/KeyInfo/Marshal.java b/jdk/test/javax/xml/crypto/dsig/keyinfo/KeyInfo/Marshal.java index a296a8cb14b..f03cbf3ac99 100644 --- a/jdk/test/javax/xml/crypto/dsig/keyinfo/KeyInfo/Marshal.java +++ b/jdk/test/javax/xml/crypto/dsig/keyinfo/KeyInfo/Marshal.java @@ -25,6 +25,7 @@ * @test * @bug 6372500 * @summary Test that KeyInfo.marshal works correctly + * @modules java.xml.crypto/org.jcp.xml.dsig.internal.dom * @compile -XDignore.symbol.file Marshal.java * @run main Marshal * @author Sean Mullan diff --git a/jdk/test/javax/xml/jaxp/Encodings/CheckEncodingPropertiesFile.java b/jdk/test/javax/xml/jaxp/Encodings/CheckEncodingPropertiesFile.java index 88e9648f066..8d74fd27b7b 100644 --- a/jdk/test/javax/xml/jaxp/Encodings/CheckEncodingPropertiesFile.java +++ b/jdk/test/javax/xml/jaxp/Encodings/CheckEncodingPropertiesFile.java @@ -30,6 +30,7 @@ * correctly maps them to their preferred mime names. * Also checks that the Encodings.properties resource file * is consistent. + * @modules java.xml/com.sun.org.apache.xml.internal.serializer * @compile -XDignore.symbol.file CheckEncodingPropertiesFile.java * @run main CheckEncodingPropertiesFile * @author Daniel Fuchs diff --git a/jdk/test/javax/xml/jaxp/XPath/8035577/Regex.java b/jdk/test/javax/xml/jaxp/XPath/8035577/Regex.java index 69c78846456..bf7c47e341d 100644 --- a/jdk/test/javax/xml/jaxp/XPath/8035577/Regex.java +++ b/jdk/test/javax/xml/jaxp/XPath/8035577/Regex.java @@ -25,6 +25,7 @@ * @test * @bug 8035577 * @summary Tests for xpath regular expression methods. + * @modules java.xml/com.sun.org.apache.xerces.internal.impl.xpath.regex * @run main Regex * @author david.x.li@oracle.com */ diff --git a/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java b/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java index 15915d04912..ca039f7bba8 100644 --- a/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java +++ b/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java @@ -25,6 +25,10 @@ * @test * @bug 8022548 * @summary test that a parser can use DTDConfiguration + * @modules java.xml/com.sun.org.apache.xerces.internal.impl + * java.xml/com.sun.org.apache.xerces.internal.parsers + * java.xml/com.sun.org.apache.xerces.internal.util + * java.xml/com.sun.org.apache.xerces.internal.xni.parser * @run main XOMParserTest */ import com.sun.org.apache.xerces.internal.impl.Constants; diff --git a/jdk/test/javax/xml/jaxp/testng/TEST.properties b/jdk/test/javax/xml/jaxp/testng/TEST.properties index 4d7d0f90d06..32d744b64a9 100644 --- a/jdk/test/javax/xml/jaxp/testng/TEST.properties +++ b/jdk/test/javax/xml/jaxp/testng/TEST.properties @@ -1,3 +1,11 @@ # This file identifies root(s) of the test-ng hierarchy. TestNG.dirs = . + +modules = java.xml/com.sun.org.apache.xerces.internal.dom \ + java.xml/com.sun.org.apache.xerces.internal.impl \ + java.xml/com.sun.org.apache.xerces.internal.impl.xs \ + java.xml/com.sun.org.apache.xerces.internal.parsers \ + java.xml/com.sun.org.apache.xerces.internal.util \ + java.xml/com.sun.org.apache.xerces.internal.xni.parser \ + java.xml/com.sun.org.apache.xerces.internal.xs diff --git a/jdk/test/jdk/internal/jimage/VerifyJimage.java b/jdk/test/jdk/internal/jimage/VerifyJimage.java index aea1df404f2..fbb9fd665c8 100644 --- a/jdk/test/jdk/internal/jimage/VerifyJimage.java +++ b/jdk/test/jdk/internal/jimage/VerifyJimage.java @@ -48,6 +48,7 @@ import jdk.internal.jimage.ImageLocation; /* * @test * @summary Verify jimage + * @modules java.base/jdk.internal.jimage * @run main/othervm VerifyJimage */ diff --git a/jdk/test/lib/security/CheckBlacklistedCerts.java b/jdk/test/lib/security/CheckBlacklistedCerts.java index 10c2915b602..7489febe348 100644 --- a/jdk/test/lib/security/CheckBlacklistedCerts.java +++ b/jdk/test/lib/security/CheckBlacklistedCerts.java @@ -25,6 +25,7 @@ * @test * @bug 8011402 * @summary Move blacklisting certificate logic from hard code to data + * @modules java.base/sun.security.util */ import sun.security.util.UntrustedCertificates; diff --git a/jdk/test/lib/testlibrary/OutputAnalyzerReportingTest.java b/jdk/test/lib/testlibrary/OutputAnalyzerReportingTest.java index f05229c9504..d0bbdcd0c93 100644 --- a/jdk/test/lib/testlibrary/OutputAnalyzerReportingTest.java +++ b/jdk/test/lib/testlibrary/OutputAnalyzerReportingTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 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 @@ -29,6 +29,7 @@ package jdk.testlibrary; * such as printing additional diagnostic info * (exit code, stdout, stderr, command line, etc.) * @library /testlibrary + * @modules java.management * @build jdk.testlibrary.* * @run main jdk.testlibrary.OutputAnalyzerReportingTest */ diff --git a/jdk/test/lib/testlibrary/OutputAnalyzerTest.java b/jdk/test/lib/testlibrary/OutputAnalyzerTest.java index cb251b37964..f9bfc1c117c 100644 --- a/jdk/test/lib/testlibrary/OutputAnalyzerTest.java +++ b/jdk/test/lib/testlibrary/OutputAnalyzerTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 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,6 +26,7 @@ package jdk.testlibrary; * @test * @summary Test the OutputAnalyzer utility class * @library /testlibrary + * @modules java.management * @build jdk.testlibrary.* * @run main jdk.testlibrary.OutputAnalyzerTest */ diff --git a/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java b/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java index 98239775661..a9697025318 100644 --- a/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java +++ b/jdk/test/lib/testlibrary/jdk/testlibrary/ProcessTools.java @@ -44,8 +44,6 @@ import java.util.function.Predicate; import java.util.function.Consumer; import java.util.stream.Collectors; -import sun.management.VMManagement; - public final class ProcessTools { private static final class LineForwarder extends StreamPumper.LinePump { private final PrintStream ps; diff --git a/jdk/test/sun/invoke/util/ValueConversionsTest.java b/jdk/test/sun/invoke/util/ValueConversionsTest.java index 483afb7625c..9a936cc97ff 100644 --- a/jdk/test/sun/invoke/util/ValueConversionsTest.java +++ b/jdk/test/sun/invoke/util/ValueConversionsTest.java @@ -35,6 +35,7 @@ import static org.junit.Assert.*; /* @test * @summary unit tests for value-type conversion utilities + * @modules java.base/sun.invoke.util * @compile -XDignore.symbol.file ValueConversionsTest.java * @run junit/othervm test.sun.invoke.util.ValueConversionsTest */ diff --git a/jdk/test/sun/management/PlatformMBeanProviderConstructorCheck.java b/jdk/test/sun/management/PlatformMBeanProviderConstructorCheck.java index 3c806864419..0892e8a5a7f 100644 --- a/jdk/test/sun/management/PlatformMBeanProviderConstructorCheck.java +++ b/jdk/test/sun/management/PlatformMBeanProviderConstructorCheck.java @@ -31,6 +31,7 @@ import java.util.List; * @test * @bug 8042901 * @summary Check permission for PlatformMBeanProvider Constructor + * @modules java.management/sun.management.spi * @author Shanliang Jiang */ public class PlatformMBeanProviderConstructorCheck { diff --git a/jdk/test/sun/management/jmxremote/startstop/JMXStatusTest.java b/jdk/test/sun/management/jmxremote/startstop/JMXStatusTest.java index 808b5a3c339..0f516b6b504 100644 --- a/jdk/test/sun/management/jmxremote/startstop/JMXStatusTest.java +++ b/jdk/test/sun/management/jmxremote/startstop/JMXStatusTest.java @@ -36,6 +36,7 @@ import jdk.testlibrary.ProcessTools; * Management agent may be disable, started (only local connections) and started. * The test asserts that the expected text is being printed. * @library /lib/testlibrary + * @modules java.management/sun.management * @build jdk.testlibrary.* PortAllocator TestApp ManagementAgentJcmd * @run testng/othervm -XX:+UsePerfData JMXStatusTest */ diff --git a/jdk/test/sun/misc/CopyMemory.java b/jdk/test/sun/misc/CopyMemory.java index 89266ed052d..6e11c6362c4 100644 --- a/jdk/test/sun/misc/CopyMemory.java +++ b/jdk/test/sun/misc/CopyMemory.java @@ -24,6 +24,7 @@ /* @test * @bug 6565543 * @summary Minimal test for unsafe.copyMemory() and unsafe.setMemory() + * @modules java.base/sun.nio.ch java.base/sun.misc * @key randomness */ diff --git a/jdk/test/sun/misc/Encode/DecodeBuffer.java b/jdk/test/sun/misc/Encode/DecodeBuffer.java index 899fffccb26..9c4e51a223c 100644 --- a/jdk/test/sun/misc/Encode/DecodeBuffer.java +++ b/jdk/test/sun/misc/Encode/DecodeBuffer.java @@ -25,7 +25,7 @@ * @test * @bug 4159554 * @summary Problem with UUDecoder - * + * @modules java.base/sun.misc */ import sun.misc.*; diff --git a/jdk/test/sun/misc/Encode/Encode.java b/jdk/test/sun/misc/Encode/Encode.java index 8d56a4f9066..53d9b31c096 100644 --- a/jdk/test/sun/misc/Encode/Encode.java +++ b/jdk/test/sun/misc/Encode/Encode.java @@ -25,7 +25,7 @@ * @test * @bug 4041231 * @summary Test UUEncoder.java for proper masking in encodeAtom - * + * @modules java.base/sun.misc */ import sun.misc.*; diff --git a/jdk/test/sun/misc/Encode/GetBytes.java b/jdk/test/sun/misc/Encode/GetBytes.java index 55fc137476f..f2a3e4c6dde 100644 --- a/jdk/test/sun/misc/Encode/GetBytes.java +++ b/jdk/test/sun/misc/Encode/GetBytes.java @@ -26,6 +26,7 @@ * @bug 5031097 * @summary sun.misc.CharacterEncoder(ByteBuffer) is dumping too * much information + * @modules java.base/sun.misc * @author Brad Wetmore */ diff --git a/jdk/test/sun/misc/FloatingDecimal/TestFDBigInteger.java b/jdk/test/sun/misc/FloatingDecimal/TestFDBigInteger.java index cfdb7b84982..983f5d78cee 100644 --- a/jdk/test/sun/misc/FloatingDecimal/TestFDBigInteger.java +++ b/jdk/test/sun/misc/FloatingDecimal/TestFDBigInteger.java @@ -29,6 +29,7 @@ import sun.misc.FDBigInteger; * @test * @bug 7032154 * @summary unit testys of sun.misc.FDBigInteger + * @modules java.base/sun.misc * @author Dmitry Nadezhin */ public class TestFDBigInteger { diff --git a/jdk/test/sun/misc/FloatingDecimal/TestFloatingDecimal.java b/jdk/test/sun/misc/FloatingDecimal/TestFloatingDecimal.java index 23e97d7421c..96806a9b708 100644 --- a/jdk/test/sun/misc/FloatingDecimal/TestFloatingDecimal.java +++ b/jdk/test/sun/misc/FloatingDecimal/TestFloatingDecimal.java @@ -58,6 +58,7 @@ public class sun.misc.FloatingDecimal { * @test * @bug 7032154 * @summary unit tests of sun.misc.FloatingDecimal + * @modules java.base/sun.misc * @library ../../../java/lang/Math * @build DoubleConsts FloatConsts * @run main TestFloatingDecimal diff --git a/jdk/test/sun/misc/JarIndex/JarIndexMergeTest.java b/jdk/test/sun/misc/JarIndex/JarIndexMergeTest.java index 46225bef1c9..1a81782f641 100644 --- a/jdk/test/sun/misc/JarIndex/JarIndexMergeTest.java +++ b/jdk/test/sun/misc/JarIndex/JarIndexMergeTest.java @@ -24,9 +24,10 @@ /* * @test * @bug 6901992 + * @summary InvalidJarIndexException due to bug in sun.misc.JarIndex.merge() + * @modules java.base/sun.misc * @compile -XDignore.symbol.file JarIndexMergeTest.java * @run main JarIndexMergeTest - * @summary InvalidJarIndexException due to bug in sun.misc.JarIndex.merge() * @author Diego Belfer */ diff --git a/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java b/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java index 8b0e3ec9a62..6d69f07849f 100644 --- a/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java +++ b/jdk/test/sun/misc/JarIndex/metaInfFilenames/Basic.java @@ -25,6 +25,7 @@ * @test * @bug 6887710 * @summary Verify the impact of sun.misc.JarIndex.metaInfFilenames on ServiceLoader + * @modules jdk.jartool/sun.tools.jar * @run main/othervm Basic */ diff --git a/jdk/test/sun/misc/JavaLangAccess/FormatUnsigned.java b/jdk/test/sun/misc/JavaLangAccess/FormatUnsigned.java index ff3411af244..c734f817c8c 100644 --- a/jdk/test/sun/misc/JavaLangAccess/FormatUnsigned.java +++ b/jdk/test/sun/misc/JavaLangAccess/FormatUnsigned.java @@ -26,8 +26,9 @@ import sun.misc.SharedSecrets; /* * @test - * @summary Test JavaLangAccess.formatUnsignedInt/-Long * @bug 8050114 + * @summary Test JavaLangAccess.formatUnsignedInt/-Long + * @modules java.base/sun.misc */ public class FormatUnsigned { diff --git a/jdk/test/sun/misc/JavaLangAccess/NewUnsafeString.java b/jdk/test/sun/misc/JavaLangAccess/NewUnsafeString.java index cfaaa4ca463..64d11c4fac5 100644 --- a/jdk/test/sun/misc/JavaLangAccess/NewUnsafeString.java +++ b/jdk/test/sun/misc/JavaLangAccess/NewUnsafeString.java @@ -28,8 +28,9 @@ import sun.misc.SharedSecrets; /* * @test - * @summary Test JavaLangAccess.newUnsafeString * @bug 8013528 + * @summary Test JavaLangAccess.newUnsafeString + * @modules java.base/sun.misc * @compile -XDignore.symbol.file NewUnsafeString.java */ public class NewUnsafeString { diff --git a/jdk/test/sun/misc/Safe.java b/jdk/test/sun/misc/Safe.java index d29967b774a..c2e938c0fa9 100644 --- a/jdk/test/sun/misc/Safe.java +++ b/jdk/test/sun/misc/Safe.java @@ -25,6 +25,7 @@ * @bug 4495577 * @summary Ensure that sun.misc.Unsafe cannot (easily) * be accessed from user code + * @modules java.base/sun.misc */ diff --git a/jdk/test/sun/misc/URLClassPath/ClassnameCharTest.java b/jdk/test/sun/misc/URLClassPath/ClassnameCharTest.java index 330ec329e34..aba760aded1 100644 --- a/jdk/test/sun/misc/URLClassPath/ClassnameCharTest.java +++ b/jdk/test/sun/misc/URLClassPath/ClassnameCharTest.java @@ -23,10 +23,11 @@ /* @test * @bug 4957669 5017871 - * @compile -XDignore.symbol.file=true ClassnameCharTest.java - * @run main ClassnameCharTest * @summary cannot load class names containing some JSR 202 characters; * plugin does not escape unicode character in http request + * @modules java.desktop/sun.applet + * @compile -XDignore.symbol.file=true ClassnameCharTest.java + * @run main ClassnameCharTest */ import java.io.*; diff --git a/jdk/test/sun/misc/VM/GetNanoTimeAdjustment.java b/jdk/test/sun/misc/VM/GetNanoTimeAdjustment.java index bfeb8c0c7f3..d92cba9eaca 100644 --- a/jdk/test/sun/misc/VM/GetNanoTimeAdjustment.java +++ b/jdk/test/sun/misc/VM/GetNanoTimeAdjustment.java @@ -27,6 +27,7 @@ import sun.misc.VM; * @test * @bug 8068730 * @summary tests that VM.getgetNanoTimeAdjustment() works as expected. + * @modules java.base/sun.misc * @run main GetNanoTimeAdjustment * @author danielfuchs */ diff --git a/jdk/test/sun/misc/Version/Version.java b/jdk/test/sun/misc/Version/Version.java index 85c8ce2a071..5846938c9d8 100644 --- a/jdk/test/sun/misc/Version/Version.java +++ b/jdk/test/sun/misc/Version/Version.java @@ -25,6 +25,7 @@ * @bug 6994413 * @summary Check the JDK and JVM version returned by sun.misc.Version * matches the versions defined in the system properties + * @modules java.base/sun.misc * @compile -XDignore.symbol.file Version.java * @run main Version */ diff --git a/jdk/test/sun/net/InetAddress/nameservice/chaining/Providers.java b/jdk/test/sun/net/InetAddress/nameservice/chaining/Providers.java index 351a1bef19f..5213b5f4a57 100644 --- a/jdk/test/sun/net/InetAddress/nameservice/chaining/Providers.java +++ b/jdk/test/sun/net/InetAddress/nameservice/chaining/Providers.java @@ -25,6 +25,7 @@ * @test * @bug 4762344 * @summary 2nd nameservice provider is non functional + * @modules java.base/sun.net.spi.nameservice * @compile -XDignore.symbol.file=true SimpleNameService.java * Simple1NameServiceDescriptor.java * Simple2NameServiceDescriptor.java diff --git a/jdk/test/sun/net/InetAddress/nameservice/deadlock/Hang.java b/jdk/test/sun/net/InetAddress/nameservice/deadlock/Hang.java index 79246ea8d89..2ea0b0dcc69 100644 --- a/jdk/test/sun/net/InetAddress/nameservice/deadlock/Hang.java +++ b/jdk/test/sun/net/InetAddress/nameservice/deadlock/Hang.java @@ -24,6 +24,7 @@ /** * @test * @bug 7012768 + * @modules java.base/sun.net.spi.nameservice * @compile -XDignore.symbol.file=true ThrowingNameService.java * ThrowingNameServiceDescriptor.java * @run main/othervm/timeout=30 -Dsun.net.spi.nameservice.provider.1=throwing,sun Hang diff --git a/jdk/test/sun/net/InetAddress/nameservice/simple/CacheTest.java b/jdk/test/sun/net/InetAddress/nameservice/simple/CacheTest.java index 48745ced557..387a08f947a 100644 --- a/jdk/test/sun/net/InetAddress/nameservice/simple/CacheTest.java +++ b/jdk/test/sun/net/InetAddress/nameservice/simple/CacheTest.java @@ -26,6 +26,7 @@ * @summary Check that InetAddress doesn't continue to throw UHE * after the name service has recovered and the negative ttl * on the initial lookup has expired. + * @modules java.base/sun.net.spi.nameservice * @compile -XDignore.symbol.file=true SimpleNameService.java * SimpleNameServiceDescriptor.java * @run main/othervm/timeout=200 -Dsun.net.spi.nameservice.provider.1=simple,sun CacheTest diff --git a/jdk/test/sun/net/InetAddress/nameservice/simple/DefaultCaching.java b/jdk/test/sun/net/InetAddress/nameservice/simple/DefaultCaching.java index 4b42af174eb..6f9e60c7be4 100644 --- a/jdk/test/sun/net/InetAddress/nameservice/simple/DefaultCaching.java +++ b/jdk/test/sun/net/InetAddress/nameservice/simple/DefaultCaching.java @@ -25,6 +25,7 @@ * @bug 6442088 * @summary Change default DNS caching behavior for code not running under * security manager. + * @modules java.base/sun.net.spi.nameservice * @compile -XDignore.symbol.file=true SimpleNameService.java * SimpleNameServiceDescriptor.java * @run main/othervm/timeout=200 -Dsun.net.inetaddr.ttl=20 -Dsun.net.spi.nameservice.provider.1=simple,sun DefaultCaching diff --git a/jdk/test/sun/net/TelnetTest.java b/jdk/test/sun/net/TelnetTest.java index 186345111e8..d8650c021aa 100644 --- a/jdk/test/sun/net/TelnetTest.java +++ b/jdk/test/sun/net/TelnetTest.java @@ -28,6 +28,7 @@ import sun.net.*; * @test * @bug 4145748 * @summary test stickyCRLF in TelnetOutputStream + * @modules java.base/sun.net */ public class TelnetTest { diff --git a/jdk/test/sun/net/ftp/B6427768.java b/jdk/test/sun/net/ftp/B6427768.java index d3845b890d0..cdadb16fc68 100644 --- a/jdk/test/sun/net/ftp/B6427768.java +++ b/jdk/test/sun/net/ftp/B6427768.java @@ -25,6 +25,7 @@ * @test * @bug 6427768 * @summary FtpURLConnection doesn't close FTP connection when login fails + * @modules java.base/sun.net.ftp * @library ../www/ftptest/ * @build FtpServer FtpCommandHandler FtpAuthHandler FtpFileSystemHandler * @run main/othervm/timeout=500 B6427768 diff --git a/jdk/test/sun/net/idn/PunycodeTest.java b/jdk/test/sun/net/idn/PunycodeTest.java index 8ee3b3e9f49..7fe0bc6adbc 100644 --- a/jdk/test/sun/net/idn/PunycodeTest.java +++ b/jdk/test/sun/net/idn/PunycodeTest.java @@ -25,6 +25,7 @@ * @test * @summary Unit test for sun.net.idn.Punycode * @bug 4737170 + * @modules java.base/sun.net.idn * @compile -XDignore.symbol.file PunycodeTest.java * @run main/othervm -ea PunycodeTest * @author Edward Wang diff --git a/jdk/test/sun/net/idn/TestStringPrep.java b/jdk/test/sun/net/idn/TestStringPrep.java index e06c09a230d..20b4f5d3659 100644 --- a/jdk/test/sun/net/idn/TestStringPrep.java +++ b/jdk/test/sun/net/idn/TestStringPrep.java @@ -25,6 +25,7 @@ * @test * @summary Unit test for sun.net.idn.Punycode * @bug 4737170 + * @modules java.base/sun.net.idn java.base/sun.text.normalizer * @library . * @compile -XDignore.symbol.file TestStringPrep.java NFS4StringPrep.java * TestData.java diff --git a/jdk/test/sun/net/www/AuthHeaderTest.java b/jdk/test/sun/net/www/AuthHeaderTest.java index 63aae18ec80..62cd443baf8 100644 --- a/jdk/test/sun/net/www/AuthHeaderTest.java +++ b/jdk/test/sun/net/www/AuthHeaderTest.java @@ -24,6 +24,7 @@ /** * @test * @bug 4804309 + * @modules java.base/sun.net.www * @library ../../../sun/net/www/httptest/ * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main AuthHeaderTest diff --git a/jdk/test/sun/net/www/EmbeddedEquals.java b/jdk/test/sun/net/www/EmbeddedEquals.java index 693eae7c12b..6098d6bb269 100644 --- a/jdk/test/sun/net/www/EmbeddedEquals.java +++ b/jdk/test/sun/net/www/EmbeddedEquals.java @@ -24,6 +24,7 @@ /** * @test * @bug 4456995 + * @modules java.base/sun.net.www * @summary HeaderParser misinterprets a '=' character embedded in value */ diff --git a/jdk/test/sun/net/www/HeaderTests.java b/jdk/test/sun/net/www/HeaderTests.java index f344e887344..a163b757df5 100644 --- a/jdk/test/sun/net/www/HeaderTests.java +++ b/jdk/test/sun/net/www/HeaderTests.java @@ -23,6 +23,7 @@ /** * @test + * @modules java.base/sun.net.www * @summary Tests for HeaderParser and MessageHeader * * Test of HeaderParser, MessageHeader changes @@ -31,7 +32,6 @@ import sun.net.www.HeaderParser; import sun.net.www.MessageHeader; -import sun.net.www.protocol.http.AuthenticationHeader; import java.io.*; import java.util.Iterator; diff --git a/jdk/test/sun/net/www/MessageHeaderTest.java b/jdk/test/sun/net/www/MessageHeaderTest.java index aceb635cfae..eeb6efc4708 100644 --- a/jdk/test/sun/net/www/MessageHeaderTest.java +++ b/jdk/test/sun/net/www/MessageHeaderTest.java @@ -24,6 +24,7 @@ /** * @test * @bug 8003948 + * @modules java.base/sun.net.www * @run main MessageHeaderTest */ import java.io.*; diff --git a/jdk/test/sun/net/www/ParseUtil_4922813.java b/jdk/test/sun/net/www/ParseUtil_4922813.java index 3dd5503af08..e985514f102 100644 --- a/jdk/test/sun/net/www/ParseUtil_4922813.java +++ b/jdk/test/sun/net/www/ParseUtil_4922813.java @@ -22,8 +22,9 @@ */ /* @test - @bug 4922813 - @summary Check the new impl of encodePath will not cause regression + * @bug 4922813 + * @summary Check the new impl of encodePath will not cause regression + * @modules java.base/sun.net.www @key randomness */ diff --git a/jdk/test/sun/net/www/ParseUtil_6274990.java b/jdk/test/sun/net/www/ParseUtil_6274990.java index f60efdd3a58..343845f2e02 100644 --- a/jdk/test/sun/net/www/ParseUtil_6274990.java +++ b/jdk/test/sun/net/www/ParseUtil_6274990.java @@ -24,6 +24,7 @@ /* @test * @summary REGRESSION: URLConnection.connect() throws Exception with non UTF-8 char * @bug 6274990 + * @modules java.base/sun.net.www */ import sun.net.www.*; diff --git a/jdk/test/sun/net/www/ParseUtil_6306697.java b/jdk/test/sun/net/www/ParseUtil_6306697.java index 78004906c1c..468d27d2358 100644 --- a/jdk/test/sun/net/www/ParseUtil_6306697.java +++ b/jdk/test/sun/net/www/ParseUtil_6306697.java @@ -24,6 +24,7 @@ /* @test * @summary PIT: CookieManager/TestCookieManager/TestCookieManager3 failed in Mustang PIT b47 * @bug 6306697 + * @modules java.base/sun.net.www */ import sun.net.www.ParseUtil; diff --git a/jdk/test/sun/net/www/ParseUtil_6380332.java b/jdk/test/sun/net/www/ParseUtil_6380332.java index 46f0601a975..a517742f2c4 100644 --- a/jdk/test/sun/net/www/ParseUtil_6380332.java +++ b/jdk/test/sun/net/www/ParseUtil_6380332.java @@ -24,6 +24,7 @@ /* @test * @summary SunTea applet fails to load under Mustang * @bug 6380332 + * @modules java.base/sun.net.www */ import sun.net.www.ParseUtil; diff --git a/jdk/test/sun/net/www/ParseUtil_6478588.java b/jdk/test/sun/net/www/ParseUtil_6478588.java index 14b7fbad533..cba7bde0449 100644 --- a/jdk/test/sun/net/www/ParseUtil_6478588.java +++ b/jdk/test/sun/net/www/ParseUtil_6478588.java @@ -24,6 +24,7 @@ /* @test * @summary StringIndexOutOfBoundsException in HttpURLConnection.getResponseCode * @bug 6478588 + * @modules java.base/sun.net.www */ import sun.net.www.ParseUtil; diff --git a/jdk/test/sun/net/www/http/ChunkedInputStream/ChunkedEncodingWithProgressMonitorTest.java b/jdk/test/sun/net/www/http/ChunkedInputStream/ChunkedEncodingWithProgressMonitorTest.java index e5c26afc92e..35b76396930 100644 --- a/jdk/test/sun/net/www/http/ChunkedInputStream/ChunkedEncodingWithProgressMonitorTest.java +++ b/jdk/test/sun/net/www/http/ChunkedInputStream/ChunkedEncodingWithProgressMonitorTest.java @@ -24,8 +24,9 @@ /** * @test * @bug 4333920 4994372 - * @run main ChunkedEncodingWithProgressMonitorTest * @summary ChunkedEncoding unit test; MeteredStream/ProgressData problem + * @modules java.base/sun.net + * @run main ChunkedEncodingWithProgressMonitorTest */ import java.net.*; diff --git a/jdk/test/sun/net/www/http/HttpClient/GetProxyPort.java b/jdk/test/sun/net/www/http/HttpClient/GetProxyPort.java index 9c3370c4bfc..ae2f9a65a9d 100644 --- a/jdk/test/sun/net/www/http/HttpClient/GetProxyPort.java +++ b/jdk/test/sun/net/www/http/HttpClient/GetProxyPort.java @@ -25,7 +25,8 @@ * @test * @bug 5025019 * @summary REGRESSION: Sun implementation for HttpURLConnection could throw NPE - * + * @modules java.base/sun.net + * java.base/sun.net.www.http */ import java.net.ServerSocket; import java.net.URL; diff --git a/jdk/test/sun/net/www/http/HttpClient/ImplicitFileName.java b/jdk/test/sun/net/www/http/HttpClient/ImplicitFileName.java index cc67ae61c79..8391bf8291a 100644 --- a/jdk/test/sun/net/www/http/HttpClient/ImplicitFileName.java +++ b/jdk/test/sun/net/www/http/HttpClient/ImplicitFileName.java @@ -24,9 +24,10 @@ /* * @test * @bug 4251209 - * @summary Make sure that implicit filenames will be returned as - * "/" -*/ + * @summary Make sure that implicit filenames will be returned as "/" + * @modules java.base/sun.net + * java.base/sun.net.www.http + */ import java.net.URL; import java.net.ServerSocket; diff --git a/jdk/test/sun/net/www/http/HttpClient/IsAvailable.java b/jdk/test/sun/net/www/http/HttpClient/IsAvailable.java index d6012a40b3b..8a509cb82ba 100644 --- a/jdk/test/sun/net/www/http/HttpClient/IsAvailable.java +++ b/jdk/test/sun/net/www/http/HttpClient/IsAvailable.java @@ -26,6 +26,8 @@ * @bug 8009650 * @summary HttpClient available() check throws SocketException when connection * has been closed + * @modules java.base/sun.net + * java.base/sun.net.www.http */ import java.net.URL; diff --git a/jdk/test/sun/net/www/http/HttpClient/IsKeepingAlive.java b/jdk/test/sun/net/www/http/HttpClient/IsKeepingAlive.java index bfe9a890eb4..7fae59c6909 100644 --- a/jdk/test/sun/net/www/http/HttpClient/IsKeepingAlive.java +++ b/jdk/test/sun/net/www/http/HttpClient/IsKeepingAlive.java @@ -26,6 +26,8 @@ * @bug 4277155 * @summary Make sure HttpClient.getHttpKeepAliveSet() has * doPrivileged() call at appropriate places. + * @modules java.base/sun.net + * java.base/sun.net.www.http * @run main/othervm/policy=IsKeepingAlive.policy IsKeepingAlive */ diff --git a/jdk/test/sun/net/www/http/HttpClient/OpenServer.java b/jdk/test/sun/net/www/http/HttpClient/OpenServer.java index 938fa2e235a..d9ca9e8e508 100644 --- a/jdk/test/sun/net/www/http/HttpClient/OpenServer.java +++ b/jdk/test/sun/net/www/http/HttpClient/OpenServer.java @@ -26,6 +26,7 @@ * @bug 4154481 * @summary Make sure HttpClient has * doPrivileged() calls at appropriate places. + * @modules java.base/sun.net.www.http * @run main/othervm/policy=OpenServer.policy OpenServer */ diff --git a/jdk/test/sun/net/www/http/HttpClient/ProxyFromCache.java b/jdk/test/sun/net/www/http/HttpClient/ProxyFromCache.java index 9f063598b40..920e5b0e254 100644 --- a/jdk/test/sun/net/www/http/HttpClient/ProxyFromCache.java +++ b/jdk/test/sun/net/www/http/HttpClient/ProxyFromCache.java @@ -24,8 +24,9 @@ /* * @test * @bug 6498566 - * @run main/othervm ProxyFromCache * @summary URL.openConnection(Proxy.NO_PROXY) may connect through a proxy. + * @modules java.base/sun.net.www + * @run main/othervm ProxyFromCache */ import java.net.*; diff --git a/jdk/test/sun/net/www/http/HttpClient/RequestURI.java b/jdk/test/sun/net/www/http/HttpClient/RequestURI.java index 3e74043d469..667a0778abf 100644 --- a/jdk/test/sun/net/www/http/HttpClient/RequestURI.java +++ b/jdk/test/sun/net/www/http/HttpClient/RequestURI.java @@ -24,8 +24,9 @@ /* * @test * @bug 6469663 - * @run main/othervm RequestURI * @summary HTTP Request-URI contains fragment when connecting through proxy + * @modules java.base/sun.net.www + * @run main/othervm RequestURI */ import java.net.*; diff --git a/jdk/test/sun/net/www/http/KeepAliveCache/B5045306.java b/jdk/test/sun/net/www/http/KeepAliveCache/B5045306.java index 7e1abfd4f0e..022e140cd3d 100644 --- a/jdk/test/sun/net/www/http/KeepAliveCache/B5045306.java +++ b/jdk/test/sun/net/www/http/KeepAliveCache/B5045306.java @@ -24,6 +24,7 @@ /* * @test * @bug 5045306 6356004 6993490 + * @modules java.base/sun.net.www * @library ../../httptest/ * @build HttpCallback TestHttpServer HttpTransaction * @run main/othervm B5045306 diff --git a/jdk/test/sun/net/www/protocol/ftp/UserAndPasswordTest.java b/jdk/test/sun/net/www/protocol/ftp/UserAndPasswordTest.java index 637ceb98fe8..e64d03fdd50 100644 --- a/jdk/test/sun/net/www/protocol/ftp/UserAndPasswordTest.java +++ b/jdk/test/sun/net/www/protocol/ftp/UserAndPasswordTest.java @@ -39,7 +39,6 @@ import java.net.*; import java.util.*; import java.util.jar.*; import java.util.zip.*; -import sun.net.ftp.FtpLoginException; public class UserAndPasswordTest { diff --git a/jdk/test/sun/net/www/protocol/http/B6296310.java b/jdk/test/sun/net/www/protocol/http/B6296310.java index 6d0ce343a4e..1b276c25647 100644 --- a/jdk/test/sun/net/www/protocol/http/B6296310.java +++ b/jdk/test/sun/net/www/protocol/http/B6296310.java @@ -24,6 +24,7 @@ /* * @test * @bug 6296310 + * @modules java.base/sun.net.www * @library ../../httptest/ * @build HttpCallback TestHttpServer HttpTransaction * @run main/othervm B6296310 diff --git a/jdk/test/sun/net/www/protocol/http/CloseOptionHeader.java b/jdk/test/sun/net/www/protocol/http/CloseOptionHeader.java index e630aa52c4e..e72471a144f 100644 --- a/jdk/test/sun/net/www/protocol/http/CloseOptionHeader.java +++ b/jdk/test/sun/net/www/protocol/http/CloseOptionHeader.java @@ -24,6 +24,7 @@ /** * @test * @bug 6189206 + * @modules java.base/sun.net.www * @run main/othervm -Dhttp.keepAlive=false CloseOptionHeader * @summary HTTP client should set "Connection: close" header in request when keepalive is disabled */ diff --git a/jdk/test/sun/net/www/protocol/http/DigestTest.java b/jdk/test/sun/net/www/protocol/http/DigestTest.java index 24c8ed88b83..9ceafbf8faa 100644 --- a/jdk/test/sun/net/www/protocol/http/DigestTest.java +++ b/jdk/test/sun/net/www/protocol/http/DigestTest.java @@ -24,6 +24,7 @@ /** * @test * @bug 4432213 + * @modules java.base/sun.net.www * @run main/othervm -Dhttp.auth.digest.validateServer=true DigestTest * @summary Need to support Digest Authentication for Proxies */ diff --git a/jdk/test/sun/net/www/protocol/http/NTLMTest.java b/jdk/test/sun/net/www/protocol/http/NTLMTest.java index 21b1d4bdb6b..d9db4fdacfb 100644 --- a/jdk/test/sun/net/www/protocol/http/NTLMTest.java +++ b/jdk/test/sun/net/www/protocol/http/NTLMTest.java @@ -24,6 +24,7 @@ /* * @test * @bug 6520665 6357133 + * @modules java.base/sun.net.www * @run main/othervm NTLMTest * @summary 6520665 & 6357133: NTLM authentication issues. */ diff --git a/jdk/test/sun/net/www/protocol/http/NoNTLM.java b/jdk/test/sun/net/www/protocol/http/NoNTLM.java index d6f9f740833..788bb3d3de8 100644 --- a/jdk/test/sun/net/www/protocol/http/NoNTLM.java +++ b/jdk/test/sun/net/www/protocol/http/NoNTLM.java @@ -25,6 +25,7 @@ * @bug 8004502 * @summary Sanity check that NTLM will not be selected by the http protocol * handler when running on a profile that does not support NTLM + * @modules java.base/sun.net.www * @run main/othervm NoNTLM */ diff --git a/jdk/test/sun/net/www/protocol/http/RelativeRedirect.java b/jdk/test/sun/net/www/protocol/http/RelativeRedirect.java index eb4b2a69e42..85915ddcb3b 100644 --- a/jdk/test/sun/net/www/protocol/http/RelativeRedirect.java +++ b/jdk/test/sun/net/www/protocol/http/RelativeRedirect.java @@ -24,6 +24,7 @@ /** * @test * @bug 4726087 + * @modules java.base/sun.net.www * @library ../../httptest/ * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main RelativeRedirect diff --git a/jdk/test/sun/net/www/protocol/http/ResponseCacheStream.java b/jdk/test/sun/net/www/protocol/http/ResponseCacheStream.java index bff2a765d6c..5f74522364b 100644 --- a/jdk/test/sun/net/www/protocol/http/ResponseCacheStream.java +++ b/jdk/test/sun/net/www/protocol/http/ResponseCacheStream.java @@ -24,6 +24,7 @@ /* * @test * @bug 6262486 + * @modules java.base/sun.net.www * @library ../../httptest/ * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main/othervm -Dhttp.keepAlive=false ResponseCacheStream diff --git a/jdk/test/sun/net/www/protocol/http/RetryUponTimeout.java b/jdk/test/sun/net/www/protocol/http/RetryUponTimeout.java index bd9df907d01..0a8e552e669 100644 --- a/jdk/test/sun/net/www/protocol/http/RetryUponTimeout.java +++ b/jdk/test/sun/net/www/protocol/http/RetryUponTimeout.java @@ -25,6 +25,7 @@ * @test * @bug 4772077 * @summary using defaultReadTimeout appear to retry request upon timeout + * @modules java.base/sun.net.www */ import java.net.*; diff --git a/jdk/test/sun/net/www/protocol/http/SetChunkedStreamingMode.java b/jdk/test/sun/net/www/protocol/http/SetChunkedStreamingMode.java index 6ed5a9a6035..292bc6ed251 100644 --- a/jdk/test/sun/net/www/protocol/http/SetChunkedStreamingMode.java +++ b/jdk/test/sun/net/www/protocol/http/SetChunkedStreamingMode.java @@ -24,8 +24,9 @@ /** * @test * @bug 5049976 + * @modules java.base/sun.net.www * @library ../../httptest/ - @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction + * @build HttpCallback TestHttpServer ClosedChannelList HttpTransaction * @run main SetChunkedStreamingMode * @summary Unspecified NPE is thrown when streaming output mode is enabled */ diff --git a/jdk/test/sun/net/www/protocol/http/TunnelThroughProxy.java b/jdk/test/sun/net/www/protocol/http/TunnelThroughProxy.java index 10009698705..ba729f84fe5 100644 --- a/jdk/test/sun/net/www/protocol/http/TunnelThroughProxy.java +++ b/jdk/test/sun/net/www/protocol/http/TunnelThroughProxy.java @@ -24,6 +24,7 @@ /** * @test * @bug 4620362 + * @modules java.base/sun.net.www * @run main/othervm TunnelThroughProxy * @summary JSSE not returning proper exception on unknown host */ diff --git a/jdk/test/sun/net/www/protocol/http/UserAgent.java b/jdk/test/sun/net/www/protocol/http/UserAgent.java index 01c8cf5d085..a8ab0028fa2 100644 --- a/jdk/test/sun/net/www/protocol/http/UserAgent.java +++ b/jdk/test/sun/net/www/protocol/http/UserAgent.java @@ -24,6 +24,7 @@ /** * @test * @bug 4512200 + * @modules java.base/sun.net.www * @run main/othervm -Dhttp.agent=foo UserAgent * @summary HTTP header "User-Agent" format incorrect */ diff --git a/jdk/test/sun/net/www/protocol/http/ZoneId.java b/jdk/test/sun/net/www/protocol/http/ZoneId.java index 5e08961f4b4..125c97d486d 100644 --- a/jdk/test/sun/net/www/protocol/http/ZoneId.java +++ b/jdk/test/sun/net/www/protocol/http/ZoneId.java @@ -24,6 +24,7 @@ /* * @test * @bug 8027308 + * @modules java.base/sun.net.www.protocol.http * @summary verifies that HttpURLConnection does not send the zone id in the * 'Host' field of the header: * Host: [fe80::a00:27ff:aaaa:aaaa] instead of diff --git a/jdk/test/sun/net/www/protocol/https/ChunkedOutputStream.java b/jdk/test/sun/net/www/protocol/https/ChunkedOutputStream.java index cce270642ce..fa5a390b7a6 100644 --- a/jdk/test/sun/net/www/protocol/https/ChunkedOutputStream.java +++ b/jdk/test/sun/net/www/protocol/https/ChunkedOutputStream.java @@ -24,6 +24,7 @@ /** * @test * @bug 5026745 + * @modules java.base/sun.net.www * @library ../../httpstest/ * @build TestHttpsServer HttpCallback * @run main/othervm ChunkedOutputStream diff --git a/jdk/test/sun/net/www/protocol/https/HttpsClient/ProxyAuthTest.java b/jdk/test/sun/net/www/protocol/https/HttpsClient/ProxyAuthTest.java index 8fa75aa81c2..2eef7f42e8b 100644 --- a/jdk/test/sun/net/www/protocol/https/HttpsClient/ProxyAuthTest.java +++ b/jdk/test/sun/net/www/protocol/https/HttpsClient/ProxyAuthTest.java @@ -26,6 +26,7 @@ * @bug 4323990 4413069 * @summary HttpsURLConnection doesn't send Proxy-Authorization on CONNECT * Incorrect checking of proxy server response + * @modules java.base/sun.net.www * @run main/othervm ProxyAuthTest * * No way to reserve and restore java.lang.Authenticator, need to run this diff --git a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/B6216082.java b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/B6216082.java index a5992579025..33af848f466 100644 --- a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/B6216082.java +++ b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/B6216082.java @@ -24,11 +24,12 @@ /* * @test * @bug 6216082 - * @library .. - * @build HttpCallback TestHttpsServer ClosedChannelList HttpTransaction TunnelProxy * @summary Redirect problem with HttpsURLConnection using a proxy * SunJSSE does not support dynamic system properties, no way to re-use * system properties in samevm/agentvm mode. + * @modules java.base/sun.net.www + * @library .. + * @build HttpCallback TestHttpsServer ClosedChannelList HttpTransaction TunnelProxy * @run main/othervm B6216082 */ diff --git a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/B6226610.java b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/B6226610.java index 3f80e8e68dd..c04ad1d1560 100644 --- a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/B6226610.java +++ b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/B6226610.java @@ -24,8 +24,9 @@ /* * @test * @bug 6226610 6973030 - * @run main/othervm B6226610 * @summary HTTP tunnel connections send user headers to proxy + * @modules java.base/sun.net.www + * @run main/othervm B6226610 */ /* This class includes a proxy server that processes the HTTP CONNECT request, diff --git a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/CheckMethods.java b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/CheckMethods.java index b8fcf977461..9ca30a19855 100644 --- a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/CheckMethods.java +++ b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/CheckMethods.java @@ -26,6 +26,7 @@ * @bug 4423074 * @summary Need to rebase all the duplicated classes from Merlin. * This test will check out http POST + * @modules java.base/sun.net.www.protocol.https java.base/com.sun.net.ssl.internal.www.protocol.https */ import java.net.*; import java.util.*; diff --git a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java index b5295f31cf5..44c60a2318a 100644 --- a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java +++ b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/DNSIdentities.java @@ -46,8 +46,6 @@ import java.security.spec.*; import java.security.interfaces.*; import java.math.BigInteger; -import sun.security.ssl.SSLSocketImpl; - /* * Certificates and key used in the test. * diff --git a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java index 88a261f81ee..7cf6282ecb4 100644 --- a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java +++ b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/IPAddressDNSIdentities.java @@ -43,8 +43,6 @@ import java.security.spec.*; import java.security.interfaces.*; import java.math.BigInteger; -import sun.security.ssl.SSLSocketImpl; - /* * Certificates and key used in the test. * diff --git a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java index bbf6892c43b..6743d1c66d1 100644 --- a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java +++ b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/IPAddressIPIdentities.java @@ -46,8 +46,6 @@ import java.security.spec.*; import java.security.interfaces.*; import java.math.BigInteger; -import sun.security.ssl.SSLSocketImpl; - /* * Certificates and key used in the test. * diff --git a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java index c0d897b5fac..cf548d48355 100644 --- a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java +++ b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/IPIdentities.java @@ -46,8 +46,6 @@ import java.security.spec.*; import java.security.interfaces.*; import java.math.BigInteger; -import sun.security.ssl.SSLSocketImpl; - /* * Certificates and key used in the test. * diff --git a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/Identities.java b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/Identities.java index 55dfb1c04dc..4f3343fa61e 100644 --- a/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/Identities.java +++ b/jdk/test/sun/net/www/protocol/https/HttpsURLConnection/Identities.java @@ -46,8 +46,6 @@ import java.security.spec.*; import java.security.interfaces.*; import java.math.BigInteger; -import sun.security.ssl.SSLSocketImpl; - /* * Certificates and key used in the test. * diff --git a/jdk/test/sun/net/www/protocol/https/NewImpl/ComHTTPSConnection.java b/jdk/test/sun/net/www/protocol/https/NewImpl/ComHTTPSConnection.java index 24e2572f78f..7b301270c6d 100644 --- a/jdk/test/sun/net/www/protocol/https/NewImpl/ComHTTPSConnection.java +++ b/jdk/test/sun/net/www/protocol/https/NewImpl/ComHTTPSConnection.java @@ -25,6 +25,8 @@ * @test * @bug 4474255 * @summary Can no longer obtain a com.sun.net.ssl.HttpsURLConnection + * @modules java.base/com.sun.net.ssl + * java.base/com.sun.net.ssl.internal.www.protocol.https * @run main/othervm ComHTTPSConnection * * SunJSSE does not support dynamic system properties, no way to re-use diff --git a/jdk/test/sun/net/www/protocol/https/NewImpl/ComHostnameVerifier.java b/jdk/test/sun/net/www/protocol/https/NewImpl/ComHostnameVerifier.java index ba065f7c3e4..6e9972444e5 100644 --- a/jdk/test/sun/net/www/protocol/https/NewImpl/ComHostnameVerifier.java +++ b/jdk/test/sun/net/www/protocol/https/NewImpl/ComHostnameVerifier.java @@ -28,6 +28,8 @@ * @bug 4484246 * @summary When an application enables anonymous SSL cipher suite, * Hostname verification is not required + * @modules java.base/com.sun.net.ssl + * java.base/com.sun.net.ssl.internal.www.protocol.https * @run main/othervm ComHostnameVerifier * * SunJSSE does not support dynamic system properties, no way to re-use diff --git a/jdk/test/sun/nio/cs/OLD/TestIBMDB.java b/jdk/test/sun/nio/cs/OLD/TestIBMDB.java index 404eb5b3aa0..f2e3cbcee79 100644 --- a/jdk/test/sun/nio/cs/OLD/TestIBMDB.java +++ b/jdk/test/sun/nio/cs/OLD/TestIBMDB.java @@ -26,6 +26,7 @@ * @bug 6843578 * @summary Test old and new implementation of db charsets * @build IBM930_OLD IBM933_OLD IBM935_OLD IBM937_OLD IBM939_OLD IBM942_OLD IBM943_OLD IBM948_OLD IBM949_OLD IBM950_OLD IBM970_OLD IBM942C_OLD IBM943C_OLD IBM949C_OLD IBM1381_OLD IBM1383_OLD EUC_CN_OLD EUC_KR_OLD GBK_OLD Johab_OLD MS932_OLD MS936_OLD MS949_OLD MS950_OLD SJIS_OLD PCK_OLD EUC_JP_OLD EUC_JP_LINUX_OLD EUC_JP_Open_OLD + * @modules java.base/sun.nio.cs jdk.charsets/sun.nio.cs.ext * @run main TestIBMDB */ diff --git a/jdk/test/sun/nio/cs/TestEUC_TW.java b/jdk/test/sun/nio/cs/TestEUC_TW.java index 97c8e1f05a4..4453a2cbead 100644 --- a/jdk/test/sun/nio/cs/TestEUC_TW.java +++ b/jdk/test/sun/nio/cs/TestEUC_TW.java @@ -25,6 +25,7 @@ * @test * @bug 6831794 6229811 * @summary Test EUC_TW charset + * @modules java.base/sun.nio.cs */ import java.nio.charset.*; diff --git a/jdk/test/sun/nio/cs/TestStringCoding.java b/jdk/test/sun/nio/cs/TestStringCoding.java index 95d273dd5cb..f9f7021dca3 100644 --- a/jdk/test/sun/nio/cs/TestStringCoding.java +++ b/jdk/test/sun/nio/cs/TestStringCoding.java @@ -22,8 +22,9 @@ */ /* @test - @bug 6636323 6636319 7040220 7096080 7183053 8080248 - @summary Test if StringCoding and NIO result have the same de/encoding result + * @bug 6636323 6636319 7040220 7096080 7183053 8080248 + * @summary Test if StringCoding and NIO result have the same de/encoding result + * @modules java.base/sun.nio.cs * @run main/othervm/timeout=2000 TestStringCoding * @key randomness */ diff --git a/jdk/test/sun/reflect/AnonymousNewInstance/ManyNewInstanceAnonTest.java b/jdk/test/sun/reflect/AnonymousNewInstance/ManyNewInstanceAnonTest.java index 063746b175a..e8d8ae7e4e3 100644 --- a/jdk/test/sun/reflect/AnonymousNewInstance/ManyNewInstanceAnonTest.java +++ b/jdk/test/sun/reflect/AnonymousNewInstance/ManyNewInstanceAnonTest.java @@ -25,8 +25,10 @@ * @test * @bug 7194897 * @summary JSR 292: Cannot create more than 16 instances of an anonymous class - * @author Robert Field + * @modules java.base/sun.misc + * @modules java.management * @library /lib/testlibrary + * @author Robert Field * @compile -XDignore.symbol.file ManyNewInstanceAnonTest.java * @build jdk.testlibrary.* * @run main ClassFileInstaller ManyNewInstanceAnonTest diff --git a/jdk/test/sun/reflect/CallerSensitive/CallerSensitiveFinder.java b/jdk/test/sun/reflect/CallerSensitive/CallerSensitiveFinder.java index b1af24f2f83..9986415aeb1 100644 --- a/jdk/test/sun/reflect/CallerSensitive/CallerSensitiveFinder.java +++ b/jdk/test/sun/reflect/CallerSensitive/CallerSensitiveFinder.java @@ -48,6 +48,7 @@ import java.util.stream.Stream; * @bug 8010117 * @summary Verify if CallerSensitive methods are annotated with * sun.reflect.CallerSensitive annotation + * @modules jdk.compiler/com.sun.tools.classfile jdk.jdeps/com.sun.tools.jdeps * @build CallerSensitiveFinder * @run main/othervm/timeout=900 CallerSensitiveFinder */ diff --git a/jdk/test/sun/reflect/CallerSensitive/MissingCallerSensitive.java b/jdk/test/sun/reflect/CallerSensitive/MissingCallerSensitive.java index 66c4398114f..86b12a6748d 100644 --- a/jdk/test/sun/reflect/CallerSensitive/MissingCallerSensitive.java +++ b/jdk/test/sun/reflect/CallerSensitive/MissingCallerSensitive.java @@ -26,6 +26,10 @@ * @test * @bug 8010117 * @summary Test CallerSensitiveFinder to find missing annotation + * @modules java.base/sun.reflect + * jdk.jdeps/com.sun.tools.classfile + * jdk.jdeps/com.sun.tools.jdeps + * @modules java.base/sun.reflect * @compile -XDignore.symbol.file MissingCallerSensitive.java * @build CallerSensitiveFinder * @run main MissingCallerSensitive diff --git a/jdk/test/sun/reflect/Reflection/GetCallerClassWithDepth.java b/jdk/test/sun/reflect/Reflection/GetCallerClassWithDepth.java index 33eefd54875..8e7c9cc9d13 100644 --- a/jdk/test/sun/reflect/Reflection/GetCallerClassWithDepth.java +++ b/jdk/test/sun/reflect/Reflection/GetCallerClassWithDepth.java @@ -25,6 +25,7 @@ * @test * @bug 8025799 * @summary sun.reflect.Reflection.getCallerClass(int) + * @modules java.base/sun.reflect * @run main GetCallerClassWithDepth */ diff --git a/jdk/test/sun/rmi/log/ReliableLog/LogAlignmentTest.java b/jdk/test/sun/rmi/log/ReliableLog/LogAlignmentTest.java index a7c7f5aa15a..18f44250e53 100644 --- a/jdk/test/sun/rmi/log/ReliableLog/LogAlignmentTest.java +++ b/jdk/test/sun/rmi/log/ReliableLog/LogAlignmentTest.java @@ -25,6 +25,7 @@ * @bug 4094889 * @summary rmid can have a corrupted log * + * @modules java.rmi/sun.rmi.log * @run main/othervm LogAlignmentTest */ diff --git a/jdk/test/sun/rmi/log/ReliableLog/SnapshotSize.java b/jdk/test/sun/rmi/log/ReliableLog/SnapshotSize.java index c8ea22cd0ed..4809b2ab04c 100644 --- a/jdk/test/sun/rmi/log/ReliableLog/SnapshotSize.java +++ b/jdk/test/sun/rmi/log/ReliableLog/SnapshotSize.java @@ -26,6 +26,7 @@ * @summary Verify that ReliableLog.snapshotSize() returns correct snapshot * file size even if LogHandler doesn't flush. * + * @modules java.rmi/sun.rmi.log * @run main/othervm SnapshotSize */ diff --git a/jdk/test/sun/rmi/rmic/classpath/RMICClassPathTest.java b/jdk/test/sun/rmi/rmic/classpath/RMICClassPathTest.java index 7abfe8adce5..77956897756 100644 --- a/jdk/test/sun/rmi/rmic/classpath/RMICClassPathTest.java +++ b/jdk/test/sun/rmi/rmic/classpath/RMICClassPathTest.java @@ -30,6 +30,8 @@ * @summary New constructor in sun.tools.java.ClassPath builds a path using * File.separator instead of File.pathSeparator. This test does * not affect VM global state, so othervm is not required. + * @modules jdk.rmic/sun.rmi.rmic + * jdk.rmic/sun.tools.java * @run main RMICClassPathTest */ diff --git a/jdk/test/sun/rmi/rmic/iiopCompilation/IIOPCompilation.java b/jdk/test/sun/rmi/rmic/iiopCompilation/IIOPCompilation.java index 14702b2f471..eb591a5443d 100644 --- a/jdk/test/sun/rmi/rmic/iiopCompilation/IIOPCompilation.java +++ b/jdk/test/sun/rmi/rmic/iiopCompilation/IIOPCompilation.java @@ -24,6 +24,11 @@ /* @test * @bug 8065957 * @library ../../../../java/rmi/testlibrary + * @modules java.corba + * java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @summary Compiles a PortableRemoteObject with rmic -iiop and ensures that stub and tie classes are generated. * @run main IIOPCompilation diff --git a/jdk/test/sun/rmi/runtime/Log/4504153/Test4504153.java b/jdk/test/sun/rmi/runtime/Log/4504153/Test4504153.java index 946e9a9c0ac..05f1ec5ec36 100644 --- a/jdk/test/sun/rmi/runtime/Log/4504153/Test4504153.java +++ b/jdk/test/sun/rmi/runtime/Log/4504153/Test4504153.java @@ -28,6 +28,10 @@ * @author Peter Jones * * @library ../../../../../java/rmi/testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build JavaVM * @run main/othervm Test4504153 */ diff --git a/jdk/test/sun/rmi/runtime/Log/6409194/NoConsoleOutput.java b/jdk/test/sun/rmi/runtime/Log/6409194/NoConsoleOutput.java index 70505fab6f2..eab963b1d8d 100644 --- a/jdk/test/sun/rmi/runtime/Log/6409194/NoConsoleOutput.java +++ b/jdk/test/sun/rmi/runtime/Log/6409194/NoConsoleOutput.java @@ -31,6 +31,10 @@ * @author Peter Jones * * @library ../../../../../java/rmi/testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary JavaVM * @run main/othervm NoConsoleOutput */ diff --git a/jdk/test/sun/rmi/runtime/Log/checkLogging/CheckLogStreams.java b/jdk/test/sun/rmi/runtime/Log/checkLogging/CheckLogStreams.java index 9f40e331ebd..e8bd9c0a545 100644 --- a/jdk/test/sun/rmi/runtime/Log/checkLogging/CheckLogStreams.java +++ b/jdk/test/sun/rmi/runtime/Log/checkLogging/CheckLogStreams.java @@ -28,6 +28,10 @@ * @author Laird Dornin * * @library ../../../../../java/rmi/testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary CheckLogging * @run main/othervm -Dsun.rmi.log.useOld=true CheckLogStreams */ diff --git a/jdk/test/sun/rmi/runtime/Log/checkLogging/CheckLogging.java b/jdk/test/sun/rmi/runtime/Log/checkLogging/CheckLogging.java index d0caf531e3b..dc23b4894eb 100644 --- a/jdk/test/sun/rmi/runtime/Log/checkLogging/CheckLogging.java +++ b/jdk/test/sun/rmi/runtime/Log/checkLogging/CheckLogging.java @@ -28,6 +28,10 @@ * @author Laird Dornin * * @library ../../../../../java/rmi/testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm CheckLogging */ diff --git a/jdk/test/sun/rmi/server/MarshalOutputStream/marshalForeignStub/MarshalForeignStub.java b/jdk/test/sun/rmi/server/MarshalOutputStream/marshalForeignStub/MarshalForeignStub.java index 7db3dfed249..a6425c2260d 100644 --- a/jdk/test/sun/rmi/server/MarshalOutputStream/marshalForeignStub/MarshalForeignStub.java +++ b/jdk/test/sun/rmi/server/MarshalOutputStream/marshalForeignStub/MarshalForeignStub.java @@ -31,6 +31,10 @@ * @author Ann Wollrath * * @library ../../../../../java/rmi/testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary Receiver MarshalForeignStub_Stub * @run main/othervm/policy=security.policy MarshalForeignStub */ diff --git a/jdk/test/sun/rmi/transport/proxy/DisableHttpDefaultValue.java b/jdk/test/sun/rmi/transport/proxy/DisableHttpDefaultValue.java index 59c39fce737..5449c3b8759 100644 --- a/jdk/test/sun/rmi/transport/proxy/DisableHttpDefaultValue.java +++ b/jdk/test/sun/rmi/transport/proxy/DisableHttpDefaultValue.java @@ -25,6 +25,7 @@ * @bug 8023862 * @summary Verify that the default value of the java.rmi.server.disableHttp * has been changed from false to true. + * @modules java.rmi/sun.rmi.transport.proxy * @compile -XDignore.symbol.file DisableHttpDefaultValue.java * * @run main/othervm DisableHttpDefaultValue true diff --git a/jdk/test/sun/rmi/transport/proxy/EagerHttpFallback.java b/jdk/test/sun/rmi/transport/proxy/EagerHttpFallback.java index 3879c665d14..5b5691701c7 100644 --- a/jdk/test/sun/rmi/transport/proxy/EagerHttpFallback.java +++ b/jdk/test/sun/rmi/transport/proxy/EagerHttpFallback.java @@ -27,6 +27,10 @@ * sun.rmi.transport.proxy.eagerHttpFallback system property is set. * * @library ../../../../java/rmi/testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary * @run main/othervm EagerHttpFallback */ diff --git a/jdk/test/sun/rmi/transport/tcp/DeadCachedConnection.java b/jdk/test/sun/rmi/transport/tcp/DeadCachedConnection.java index ebc92f61ef1..0ad0dc5202e 100644 --- a/jdk/test/sun/rmi/transport/tcp/DeadCachedConnection.java +++ b/jdk/test/sun/rmi/transport/tcp/DeadCachedConnection.java @@ -25,6 +25,10 @@ * @bug 4094891 * @summary unable to retry call if cached connection to server is used * @library ../../../../java/rmi/testlibrary + * @modules java.rmi/sun.rmi.registry + * java.rmi/sun.rmi.server + * java.rmi/sun.rmi.transport + * java.rmi/sun.rmi.transport.tcp * @build TestLibrary JavaVM * @run main/othervm DeadCachedConnection */ diff --git a/jdk/test/sun/rmi/transport/tcp/blockAccept/BlockAcceptTest.java b/jdk/test/sun/rmi/transport/tcp/blockAccept/BlockAcceptTest.java index 2f5002d323e..7de92ee2c47 100644 --- a/jdk/test/sun/rmi/transport/tcp/blockAccept/BlockAcceptTest.java +++ b/jdk/test/sun/rmi/transport/tcp/blockAccept/BlockAcceptTest.java @@ -28,6 +28,7 @@ * @author Adrian Colley * * @library ../../../../../java/rmi/testlibrary + * @modules java.rmi/sun.rmi.transport.proxy * @build TestIface TestImpl TestImpl_Stub * @run main/othervm/policy=security.policy/timeout=60 BlockAcceptTest */ diff --git a/jdk/test/sun/security/action/Generify.java b/jdk/test/sun/security/action/Generify.java index 66e5afebe5c..55b0e7735db 100644 --- a/jdk/test/sun/security/action/Generify.java +++ b/jdk/test/sun/security/action/Generify.java @@ -25,6 +25,7 @@ * @test * @bug 5057136 * @summary Generify sun.security.action.GetPropertyAction and friends + * @modules java.base/sun.security.action */ import java.io.*; diff --git a/jdk/test/sun/security/action/GetLongAction/ReturnNullIfNoDefault.java b/jdk/test/sun/security/action/GetLongAction/ReturnNullIfNoDefault.java index c738a7e584f..be465575019 100644 --- a/jdk/test/sun/security/action/GetLongAction/ReturnNullIfNoDefault.java +++ b/jdk/test/sun/security/action/GetLongAction/ReturnNullIfNoDefault.java @@ -26,6 +26,7 @@ * @bug 4173993 * @summary Make sure "null" is returned if property does not exist (or has * wrong numeric format) and no default has been specified. + * @modules java.base/sun.security.action */ import sun.security.action.*; diff --git a/jdk/test/sun/security/ec/TestEC.java b/jdk/test/sun/security/ec/TestEC.java index a9368474849..62ffc076020 100644 --- a/jdk/test/sun/security/ec/TestEC.java +++ b/jdk/test/sun/security/ec/TestEC.java @@ -34,6 +34,7 @@ * @library ../pkcs11/ec * @library ../pkcs11/sslecc * @library ../../../java/security/testlibrary + * @modules jdk.crypto.pkcs11/sun.security.pkcs11.wrapper * @compile -XDignore.symbol.file TestEC.java * @run main/othervm TestEC */ diff --git a/jdk/test/sun/security/jgss/DefaultGssConfig.java b/jdk/test/sun/security/jgss/DefaultGssConfig.java index 3517b75076a..e80a2aaf365 100644 --- a/jdk/test/sun/security/jgss/DefaultGssConfig.java +++ b/jdk/test/sun/security/jgss/DefaultGssConfig.java @@ -25,6 +25,7 @@ * @test * @bug 6483218 * @summary Provide a default login configuration + * @modules java.security.jgss/sun.security.jgss */ import java.io.FileNotFoundException; diff --git a/jdk/test/sun/security/jgss/GssNPE.java b/jdk/test/sun/security/jgss/GssNPE.java index d2723ba625c..8eef7fd52a0 100644 --- a/jdk/test/sun/security/jgss/GssNPE.java +++ b/jdk/test/sun/security/jgss/GssNPE.java @@ -24,6 +24,7 @@ /* * @test * @bug 6345338 + * @modules java.security.jgss/sun.security.jgss * @run main/othervm GssNPE * @summary GSS throws NPE when the JAAS config file does not exist */ diff --git a/jdk/test/sun/security/jgss/spnego/NegTokenTargFields.java b/jdk/test/sun/security/jgss/spnego/NegTokenTargFields.java index b6efa276318..aa0bcf12408 100644 --- a/jdk/test/sun/security/jgss/spnego/NegTokenTargFields.java +++ b/jdk/test/sun/security/jgss/spnego/NegTokenTargFields.java @@ -25,6 +25,7 @@ * @test * @bug 7040151 * @summary SPNEGO GSS code does not parse tokens in accordance to RFC 2478 + * @modules java.security.jgss/sun.security.jgss.spnego * @compile -XDignore.symbol.file NegTokenTargFields.java * @run main NegTokenTargFields nomech * @run main/fail NegTokenTargFields badorder diff --git a/jdk/test/sun/security/jgss/spnego/NoSpnegoAsDefMech.java b/jdk/test/sun/security/jgss/spnego/NoSpnegoAsDefMech.java index 2dcedc482f9..4565622db5f 100644 --- a/jdk/test/sun/security/jgss/spnego/NoSpnegoAsDefMech.java +++ b/jdk/test/sun/security/jgss/spnego/NoSpnegoAsDefMech.java @@ -24,6 +24,7 @@ /* * @test * @bug 6770883 + * @modules java.security.jgss/sun.security.jgss * @run main/othervm NoSpnegoAsDefMech * @summary Infinite loop if SPNEGO specified as sun.security.jgss.mechanism */ diff --git a/jdk/test/sun/security/jgss/spnego/NotPreferredMech.java b/jdk/test/sun/security/jgss/spnego/NotPreferredMech.java index 5eb8150d265..bbe5024e501 100644 --- a/jdk/test/sun/security/jgss/spnego/NotPreferredMech.java +++ b/jdk/test/sun/security/jgss/spnego/NotPreferredMech.java @@ -24,6 +24,9 @@ /* * @test * @bug 8048194 + * @modules java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.jgss.spnego * @run main/othervm NotPreferredMech * @summary GSSContext.acceptSecContext fails when a supported mech is not initiator preferred */ diff --git a/jdk/test/sun/security/krb5/KrbCredSubKey.java b/jdk/test/sun/security/krb5/KrbCredSubKey.java index e6c96430f76..0b68fceeb53 100644 --- a/jdk/test/sun/security/krb5/KrbCredSubKey.java +++ b/jdk/test/sun/security/krb5/KrbCredSubKey.java @@ -24,6 +24,8 @@ /** * @test * @bug 7030180 + * @modules java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 * @run main/othervm KrbCredSubKey * @summary AES 128/256 decrypt exception */ diff --git a/jdk/test/sun/security/krb5/MicroTime.java b/jdk/test/sun/security/krb5/MicroTime.java index 5ac63ca9050..8b6b9232415 100644 --- a/jdk/test/sun/security/krb5/MicroTime.java +++ b/jdk/test/sun/security/krb5/MicroTime.java @@ -24,6 +24,7 @@ * @test * @bug 6882687 8011124 * @summary KerberosTime too imprecise + * @modules java.security.jgss/sun.security.krb5.internal */ import sun.security.krb5.internal.KerberosTime; diff --git a/jdk/test/sun/security/krb5/NegativeNonce.java b/jdk/test/sun/security/krb5/NegativeNonce.java index 5ea861b990f..0b9ed633fbb 100644 --- a/jdk/test/sun/security/krb5/NegativeNonce.java +++ b/jdk/test/sun/security/krb5/NegativeNonce.java @@ -24,6 +24,7 @@ * @test * @bug 6517944 * @summary Nonce should be UInt32 + * @modules java.security.jgss/sun.security.krb5.internal.crypto */ import sun.security.krb5.internal.crypto.Nonce; diff --git a/jdk/test/sun/security/krb5/OptionPADataInKDCReq.java b/jdk/test/sun/security/krb5/OptionPADataInKDCReq.java index fbab3c8d563..7d9b3bc6716 100644 --- a/jdk/test/sun/security/krb5/OptionPADataInKDCReq.java +++ b/jdk/test/sun/security/krb5/OptionPADataInKDCReq.java @@ -24,6 +24,8 @@ * @test * @bug 6648972 * @summary KDCReq.init always read padata + * @modules java.base/sun.security.util + * java.security.jgss/sun.security.krb5.internal */ import sun.security.krb5.internal.ETypeInfo2; import sun.security.krb5.internal.KDCReq; diff --git a/jdk/test/sun/security/krb5/RFC396xTest.java b/jdk/test/sun/security/krb5/RFC396xTest.java index 76016c38817..186a624803b 100644 --- a/jdk/test/sun/security/krb5/RFC396xTest.java +++ b/jdk/test/sun/security/krb5/RFC396xTest.java @@ -23,6 +23,9 @@ /* * @test * @bug 6862679 + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.crypto.dk * @run main/othervm RFC396xTest * @summary ESC: AD Authentication with user with umlauts fails */ diff --git a/jdk/test/sun/security/krb5/ServiceCredsCombination.java b/jdk/test/sun/security/krb5/ServiceCredsCombination.java index d44c4c6b6a1..3876743e516 100644 --- a/jdk/test/sun/security/krb5/ServiceCredsCombination.java +++ b/jdk/test/sun/security/krb5/ServiceCredsCombination.java @@ -23,6 +23,7 @@ /* * @test * @bug 8005447 + * @modules java.security.jgss/sun.security.jgss * @compile -XDignore.symbol.file ServiceCredsCombination.java * @run main ServiceCredsCombination * @summary default principal can act as anyone diff --git a/jdk/test/sun/security/krb5/TestPAData.java b/jdk/test/sun/security/krb5/TestPAData.java index 86a4c836739..09a451a5eba 100644 --- a/jdk/test/sun/security/krb5/TestPAData.java +++ b/jdk/test/sun/security/krb5/TestPAData.java @@ -24,6 +24,8 @@ * @test * @bug 6570062 * @summary Kerberos authentication regression + * @modules java.base/sun.security.util + * java.security.jgss/sun.security.krb5.internal */ import sun.security.krb5.internal.KRBError; diff --git a/jdk/test/sun/security/krb5/UnknownCCEntry.java b/jdk/test/sun/security/krb5/UnknownCCEntry.java index 17af51e2847..c91f9732c8f 100644 --- a/jdk/test/sun/security/krb5/UnknownCCEntry.java +++ b/jdk/test/sun/security/krb5/UnknownCCEntry.java @@ -24,6 +24,8 @@ * @test * @bug 6979329 * @summary CCacheInputStream fails to read ticket cache files from Kerberos 1.8.1 + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal.ccache */ import java.io.ByteArrayInputStream; diff --git a/jdk/test/sun/security/krb5/auto/AcceptPermissions.java b/jdk/test/sun/security/krb5/auto/AcceptPermissions.java index d26f9688a6b..e63a06cba0e 100644 --- a/jdk/test/sun/security/krb5/auto/AcceptPermissions.java +++ b/jdk/test/sun/security/krb5/auto/AcceptPermissions.java @@ -25,6 +25,14 @@ * @test * @bug 9999999 * @summary default principal can act as anyone + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file AcceptPermissions.java * @run main/othervm AcceptPermissions two * @run main/othervm AcceptPermissions unbound diff --git a/jdk/test/sun/security/krb5/auto/AcceptorSubKey.java b/jdk/test/sun/security/krb5/auto/AcceptorSubKey.java index f5e122d030e..cbff85de802 100644 --- a/jdk/test/sun/security/krb5/auto/AcceptorSubKey.java +++ b/jdk/test/sun/security/krb5/auto/AcceptorSubKey.java @@ -25,6 +25,14 @@ * @test * @bug 7077646 * @summary gssapi wrap for CFX per-message tokens always set FLAG_ACCEPTOR_SUBKEY + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file AcceptorSubKey.java * @run main/othervm AcceptorSubKey 0 * @run main/othervm AcceptorSubKey 4 diff --git a/jdk/test/sun/security/krb5/auto/AddressesAndNameType.java b/jdk/test/sun/security/krb5/auto/AddressesAndNameType.java index de0dc89491c..0d3985be028 100644 --- a/jdk/test/sun/security/krb5/auto/AddressesAndNameType.java +++ b/jdk/test/sun/security/krb5/auto/AddressesAndNameType.java @@ -24,6 +24,13 @@ /* * @test * @bug 4501327 4868379 8039132 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm AddressesAndNameType 1 * @run main/othervm AddressesAndNameType 2 * @run main/othervm AddressesAndNameType 3 diff --git a/jdk/test/sun/security/krb5/auto/BadKdc1.java b/jdk/test/sun/security/krb5/auto/BadKdc1.java index dd608939a92..8108535d284 100644 --- a/jdk/test/sun/security/krb5/auto/BadKdc1.java +++ b/jdk/test/sun/security/krb5/auto/BadKdc1.java @@ -24,6 +24,13 @@ /* * @test * @bug 6843127 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm/timeout=300 BadKdc1 * @summary krb5 should not try to access unavailable kdc too often */ diff --git a/jdk/test/sun/security/krb5/auto/BadKdc2.java b/jdk/test/sun/security/krb5/auto/BadKdc2.java index 4291d5c14c0..403a9111c11 100644 --- a/jdk/test/sun/security/krb5/auto/BadKdc2.java +++ b/jdk/test/sun/security/krb5/auto/BadKdc2.java @@ -24,6 +24,13 @@ /* * @test * @bug 6843127 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm/timeout=300 BadKdc2 * @summary krb5 should not try to access unavailable kdc too often */ diff --git a/jdk/test/sun/security/krb5/auto/BadKdc3.java b/jdk/test/sun/security/krb5/auto/BadKdc3.java index 4bafd9a2ffe..f739ce0078f 100644 --- a/jdk/test/sun/security/krb5/auto/BadKdc3.java +++ b/jdk/test/sun/security/krb5/auto/BadKdc3.java @@ -24,6 +24,13 @@ /* * @test * @bug 6843127 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm/timeout=300 BadKdc3 * @summary krb5 should not try to access unavailable kdc too often */ diff --git a/jdk/test/sun/security/krb5/auto/BadKdc4.java b/jdk/test/sun/security/krb5/auto/BadKdc4.java index 877e5400df9..a45d9f15624 100644 --- a/jdk/test/sun/security/krb5/auto/BadKdc4.java +++ b/jdk/test/sun/security/krb5/auto/BadKdc4.java @@ -24,6 +24,13 @@ /* * @test * @bug 6843127 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm/timeout=300 BadKdc4 * @summary krb5 should not try to access unavailable kdc too often */ diff --git a/jdk/test/sun/security/krb5/auto/Basic.java b/jdk/test/sun/security/krb5/auto/Basic.java index ef7f11db509..c16d0373131 100644 --- a/jdk/test/sun/security/krb5/auto/Basic.java +++ b/jdk/test/sun/security/krb5/auto/Basic.java @@ -25,6 +25,14 @@ * @test * @bug 7152176 * @summary More krb5 tests + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file Basic.java * @run main/othervm Basic */ diff --git a/jdk/test/sun/security/krb5/auto/BasicKrb5Test.java b/jdk/test/sun/security/krb5/auto/BasicKrb5Test.java index 3a60cc2fd9a..7fb18b0f9bf 100644 --- a/jdk/test/sun/security/krb5/auto/BasicKrb5Test.java +++ b/jdk/test/sun/security/krb5/auto/BasicKrb5Test.java @@ -25,6 +25,14 @@ * @test * @bug 6706974 * @summary Add krb5 test infrastructure + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file BasicKrb5Test.java * @run main/othervm BasicKrb5Test * @run main/othervm BasicKrb5Test des-cbc-crc diff --git a/jdk/test/sun/security/krb5/auto/BasicProc.java b/jdk/test/sun/security/krb5/auto/BasicProc.java index 54b204fb420..8cfee2b1892 100644 --- a/jdk/test/sun/security/krb5/auto/BasicProc.java +++ b/jdk/test/sun/security/krb5/auto/BasicProc.java @@ -26,6 +26,13 @@ * @bug 8009977 * @summary A test library to launch multiple Java processes * @library ../../../../java/security/testlibrary/ + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file BasicProc.java * @run main/othervm BasicProc */ diff --git a/jdk/test/sun/security/krb5/auto/CleanState.java b/jdk/test/sun/security/krb5/auto/CleanState.java index b63e23deffe..1c76cfd99be 100644 --- a/jdk/test/sun/security/krb5/auto/CleanState.java +++ b/jdk/test/sun/security/krb5/auto/CleanState.java @@ -24,6 +24,13 @@ /* * @test * @bug 6716534 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file CleanState.java * @run main/othervm CleanState * @summary Krb5LoginModule has not cleaned temp info between authentication attempts diff --git a/jdk/test/sun/security/krb5/auto/CrossRealm.java b/jdk/test/sun/security/krb5/auto/CrossRealm.java index 26dc6ae6419..97d29452742 100644 --- a/jdk/test/sun/security/krb5/auto/CrossRealm.java +++ b/jdk/test/sun/security/krb5/auto/CrossRealm.java @@ -24,6 +24,14 @@ /* * @test * @bug 6706974 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file CrossRealm.java * @run main/othervm CrossRealm * @summary Add krb5 test infrastructure diff --git a/jdk/test/sun/security/krb5/auto/DiffNameSameKey.java b/jdk/test/sun/security/krb5/auto/DiffNameSameKey.java index 38bacb861e3..0290d442cff 100644 --- a/jdk/test/sun/security/krb5/auto/DiffNameSameKey.java +++ b/jdk/test/sun/security/krb5/auto/DiffNameSameKey.java @@ -25,6 +25,14 @@ * @test * @bug 8005447 * @summary default principal can act as anyone + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file DiffNameSameKey.java * @run main/othervm/fail DiffNameSameKey a * @run main/othervm DiffNameSameKey b diff --git a/jdk/test/sun/security/krb5/auto/DupEtypes.java b/jdk/test/sun/security/krb5/auto/DupEtypes.java index efc26e825c0..55fd273995a 100644 --- a/jdk/test/sun/security/krb5/auto/DupEtypes.java +++ b/jdk/test/sun/security/krb5/auto/DupEtypes.java @@ -25,6 +25,14 @@ * @test * @bug 7067974 * @summary multiple ETYPE-INFO-ENTRY with same etype and different salt + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file DupEtypes.java * @run main/othervm DupEtypes 1 * @run main/othervm DupEtypes 2 diff --git a/jdk/test/sun/security/krb5/auto/DynamicKeytab.java b/jdk/test/sun/security/krb5/auto/DynamicKeytab.java index dd9e67cac8a..eaaee087f29 100644 --- a/jdk/test/sun/security/krb5/auto/DynamicKeytab.java +++ b/jdk/test/sun/security/krb5/auto/DynamicKeytab.java @@ -24,6 +24,14 @@ /* * @test * @bug 6894072 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file DynamicKeytab.java * @run main/othervm DynamicKeytab * @summary always refresh keytab diff --git a/jdk/test/sun/security/krb5/auto/EmptyPassword.java b/jdk/test/sun/security/krb5/auto/EmptyPassword.java index d66b202ec37..4a631ef68ed 100644 --- a/jdk/test/sun/security/krb5/auto/EmptyPassword.java +++ b/jdk/test/sun/security/krb5/auto/EmptyPassword.java @@ -25,6 +25,13 @@ * @test * @bug 6879540 * @summary enable empty password for kerberos 5 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file EmptyPassword.java * @run main/othervm EmptyPassword */ diff --git a/jdk/test/sun/security/krb5/auto/FileKeyTab.java b/jdk/test/sun/security/krb5/auto/FileKeyTab.java index a8e8377172f..e7333e12c66 100644 --- a/jdk/test/sun/security/krb5/auto/FileKeyTab.java +++ b/jdk/test/sun/security/krb5/auto/FileKeyTab.java @@ -25,13 +25,19 @@ * @test * @bug 7152121 * @summary Krb5LoginModule no longer handles keyTabNames with "file:" prefix + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file FileKeyTab.java * @run main/othervm FileKeyTab */ import java.io.File; import java.io.FileOutputStream; -import sun.security.jgss.GSSUtil; // The basic krb5 test skeleton you can copy from public class FileKeyTab { diff --git a/jdk/test/sun/security/krb5/auto/ForwardableCheck.java b/jdk/test/sun/security/krb5/auto/ForwardableCheck.java index df6e49ec66b..b5ffe5df05b 100644 --- a/jdk/test/sun/security/krb5/auto/ForwardableCheck.java +++ b/jdk/test/sun/security/krb5/auto/ForwardableCheck.java @@ -25,6 +25,14 @@ * @test * @bug 8022582 * @summary Relax response flags checking in sun.security.krb5.KrbKdcRep.check. + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file ForwardableCheck.java * @run main/othervm ForwardableCheck */ diff --git a/jdk/test/sun/security/krb5/auto/GSS.java b/jdk/test/sun/security/krb5/auto/GSS.java index 8e782095884..00d9b69c5ec 100644 --- a/jdk/test/sun/security/krb5/auto/GSS.java +++ b/jdk/test/sun/security/krb5/auto/GSS.java @@ -25,6 +25,14 @@ * @test * @bug 7152176 * @summary More krb5 tests + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file GSS.java * @run main/othervm GSS */ diff --git a/jdk/test/sun/security/krb5/auto/GSSUnbound.java b/jdk/test/sun/security/krb5/auto/GSSUnbound.java index 74f0e9a91ec..973920d8c0f 100644 --- a/jdk/test/sun/security/krb5/auto/GSSUnbound.java +++ b/jdk/test/sun/security/krb5/auto/GSSUnbound.java @@ -25,6 +25,14 @@ * @test * @bug 8001104 * @summary Unbound SASL service: the GSSAPI/krb5 mech + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file GSSUnbound.java * @run main/othervm GSSUnbound */ diff --git a/jdk/test/sun/security/krb5/auto/HttpNegotiateServer.java b/jdk/test/sun/security/krb5/auto/HttpNegotiateServer.java index 9d3b44e0057..70c95f72fe3 100644 --- a/jdk/test/sun/security/krb5/auto/HttpNegotiateServer.java +++ b/jdk/test/sun/security/krb5/auto/HttpNegotiateServer.java @@ -24,6 +24,15 @@ /* * @test * @bug 6578647 6829283 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.base/sun.util.logging + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm HttpNegotiateServer * @summary Undefined requesting URL in java.net.Authenticator.getPasswordAuthentication() * @summary HTTP/Negotiate: Authenticator triggered again when user cancels the first one diff --git a/jdk/test/sun/security/krb5/auto/IgnoreChannelBinding.java b/jdk/test/sun/security/krb5/auto/IgnoreChannelBinding.java index e2641a9a4f9..6f675ddca8b 100644 --- a/jdk/test/sun/security/krb5/auto/IgnoreChannelBinding.java +++ b/jdk/test/sun/security/krb5/auto/IgnoreChannelBinding.java @@ -24,6 +24,14 @@ /* * @test * @bug 6851973 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm IgnoreChannelBinding * @summary ignore incoming channel binding if acceptor does not set one */ diff --git a/jdk/test/sun/security/krb5/auto/KPEquals.java b/jdk/test/sun/security/krb5/auto/KPEquals.java index 7a7aaa34f24..b9b314805c2 100644 --- a/jdk/test/sun/security/krb5/auto/KPEquals.java +++ b/jdk/test/sun/security/krb5/auto/KPEquals.java @@ -25,6 +25,14 @@ * @test * @bug 8015669 * @summary KerberosPrincipal::equals should ignore name-type + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file KPEquals.java * @run main/othervm KPEquals */ diff --git a/jdk/test/sun/security/krb5/auto/KeyPermissions.java b/jdk/test/sun/security/krb5/auto/KeyPermissions.java index 78f0eafc6c5..4e90d29bcae 100644 --- a/jdk/test/sun/security/krb5/auto/KeyPermissions.java +++ b/jdk/test/sun/security/krb5/auto/KeyPermissions.java @@ -25,6 +25,14 @@ * @test * @bug 8004488 * @summary wrong permissions checked in krb5 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file KeyPermissions.java * @run main/othervm KeyPermissions */ diff --git a/jdk/test/sun/security/krb5/auto/KeyTabCompat.java b/jdk/test/sun/security/krb5/auto/KeyTabCompat.java index 00a7f7cd837..3939b524ff2 100644 --- a/jdk/test/sun/security/krb5/auto/KeyTabCompat.java +++ b/jdk/test/sun/security/krb5/auto/KeyTabCompat.java @@ -25,6 +25,14 @@ * @test * @bug 6894072 * @bug 8004488 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file KeyTabCompat.java * @run main/othervm KeyTabCompat * @summary always refresh keytab diff --git a/jdk/test/sun/security/krb5/auto/KvnoNA.java b/jdk/test/sun/security/krb5/auto/KvnoNA.java index 2c645ecf357..4dd4e9ea8c0 100644 --- a/jdk/test/sun/security/krb5/auto/KvnoNA.java +++ b/jdk/test/sun/security/krb5/auto/KvnoNA.java @@ -24,6 +24,14 @@ /* * @test * @bug 7197159 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file KvnoNA.java * @run main/othervm KvnoNA * @summary accept different kvno if there no match diff --git a/jdk/test/sun/security/krb5/auto/LifeTimeInSeconds.java b/jdk/test/sun/security/krb5/auto/LifeTimeInSeconds.java index 961990bdda7..eb924fd1a38 100644 --- a/jdk/test/sun/security/krb5/auto/LifeTimeInSeconds.java +++ b/jdk/test/sun/security/krb5/auto/LifeTimeInSeconds.java @@ -24,6 +24,13 @@ /* * @test * @bug 6857802 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm LifeTimeInSeconds * @summary GSS getRemainingInitLifetime method returns milliseconds not seconds */ diff --git a/jdk/test/sun/security/krb5/auto/LoginModuleOptions.java b/jdk/test/sun/security/krb5/auto/LoginModuleOptions.java index 2c77451d748..42feacc8241 100644 --- a/jdk/test/sun/security/krb5/auto/LoginModuleOptions.java +++ b/jdk/test/sun/security/krb5/auto/LoginModuleOptions.java @@ -24,6 +24,13 @@ /* * @test * @bug 6765491 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm LoginModuleOptions * @summary Krb5LoginModule a little too restrictive, and the doc is not clear. */ diff --git a/jdk/test/sun/security/krb5/auto/LoginNoPass.java b/jdk/test/sun/security/krb5/auto/LoginNoPass.java index 73de94001ae..019dc102f6f 100644 --- a/jdk/test/sun/security/krb5/auto/LoginNoPass.java +++ b/jdk/test/sun/security/krb5/auto/LoginNoPass.java @@ -25,6 +25,14 @@ * @test * @bug 8028351 * @summary JWS doesn't get authenticated when using kerberos auth proxy + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file LoginNoPass.java * @run main/othervm LoginNoPass */ diff --git a/jdk/test/sun/security/krb5/auto/MSOID2.java b/jdk/test/sun/security/krb5/auto/MSOID2.java index e81be6a8a3d..fd5c6866e56 100644 --- a/jdk/test/sun/security/krb5/auto/MSOID2.java +++ b/jdk/test/sun/security/krb5/auto/MSOID2.java @@ -25,6 +25,15 @@ * @test * @bug 8078439 * @summary SPNEGO auth fails if client proposes MS krb5 OID + * @modules java.base/sun.misc + * java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file MSOID2.java * @run main/othervm MSOID2 */ diff --git a/jdk/test/sun/security/krb5/auto/MaxRetries.java b/jdk/test/sun/security/krb5/auto/MaxRetries.java index 880c0233381..adcbc646cc8 100644 --- a/jdk/test/sun/security/krb5/auto/MaxRetries.java +++ b/jdk/test/sun/security/krb5/auto/MaxRetries.java @@ -24,6 +24,13 @@ /* * @test * @bug 6844193 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file MaxRetries.java * @run main/othervm/timeout=300 MaxRetries * @summary support max_retries in krb5.conf diff --git a/jdk/test/sun/security/krb5/auto/MoreKvno.java b/jdk/test/sun/security/krb5/auto/MoreKvno.java index 8abb1e23ffb..bdb1d9a4381 100644 --- a/jdk/test/sun/security/krb5/auto/MoreKvno.java +++ b/jdk/test/sun/security/krb5/auto/MoreKvno.java @@ -24,6 +24,14 @@ /* * @test * @bug 6893158 6907425 7197159 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm MoreKvno * @summary AP_REQ check should use key version number */ diff --git a/jdk/test/sun/security/krb5/auto/NewInquireTypes.java b/jdk/test/sun/security/krb5/auto/NewInquireTypes.java index bb4d041b413..63d9efa24ac 100644 --- a/jdk/test/sun/security/krb5/auto/NewInquireTypes.java +++ b/jdk/test/sun/security/krb5/auto/NewInquireTypes.java @@ -25,6 +25,14 @@ * @test * @bug 8043071 * @summary Expose session key and KRB_CRED through extended GSS-API + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file NewInquireTypes.java * @run main/othervm NewInquireTypes */ diff --git a/jdk/test/sun/security/krb5/auto/NewSalt.java b/jdk/test/sun/security/krb5/auto/NewSalt.java index 2a0a17fcd9f..ec9fa2ce14f 100644 --- a/jdk/test/sun/security/krb5/auto/NewSalt.java +++ b/jdk/test/sun/security/krb5/auto/NewSalt.java @@ -25,6 +25,14 @@ * @test * @bug 6960894 * @summary Better AS-REQ creation and processing + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm NewSalt * @run main/othervm -Dnopreauth NewSalt * @run main/othervm -Donlyonepreauth NewSalt diff --git a/jdk/test/sun/security/krb5/auto/NoAddresses.java b/jdk/test/sun/security/krb5/auto/NoAddresses.java index 04c5b71e52a..15e7fe198cf 100644 --- a/jdk/test/sun/security/krb5/auto/NoAddresses.java +++ b/jdk/test/sun/security/krb5/auto/NoAddresses.java @@ -24,6 +24,14 @@ /* * @test * @bug 7032354 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm NoAddresses 1 * @run main/othervm NoAddresses 2 * @run main/othervm/fail NoAddresses 3 diff --git a/jdk/test/sun/security/krb5/auto/NoInitNoKeytab.java b/jdk/test/sun/security/krb5/auto/NoInitNoKeytab.java index cde2ec6bbe4..571f54c7c89 100644 --- a/jdk/test/sun/security/krb5/auto/NoInitNoKeytab.java +++ b/jdk/test/sun/security/krb5/auto/NoInitNoKeytab.java @@ -25,6 +25,14 @@ * @test * @bug 7089889 * @summary Krb5LoginModule.login() throws an exception if used without a keytab + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file NoInitNoKeytab.java * @run main/othervm NoInitNoKeytab */ diff --git a/jdk/test/sun/security/krb5/auto/NonMutualSpnego.java b/jdk/test/sun/security/krb5/auto/NonMutualSpnego.java index 304dca1be89..cdd05c241c9 100644 --- a/jdk/test/sun/security/krb5/auto/NonMutualSpnego.java +++ b/jdk/test/sun/security/krb5/auto/NonMutualSpnego.java @@ -24,6 +24,14 @@ /* * @test * @bug 6733095 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm NonMutualSpnego * @summary Failure when SPNEGO request non-Mutual */ diff --git a/jdk/test/sun/security/krb5/auto/NoneReplayCacheTest.java b/jdk/test/sun/security/krb5/auto/NoneReplayCacheTest.java index 2bb59a2990f..555f15ff696 100644 --- a/jdk/test/sun/security/krb5/auto/NoneReplayCacheTest.java +++ b/jdk/test/sun/security/krb5/auto/NoneReplayCacheTest.java @@ -24,6 +24,14 @@ /* * @test * @bug 8001326 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm NoneReplayCacheTest * @summary the replaycache type none cannot stop an authenticator replay, * but it can stop a message replay when s.s.k.acceptor.subkey is true. diff --git a/jdk/test/sun/security/krb5/auto/OkAsDelegate.java b/jdk/test/sun/security/krb5/auto/OkAsDelegate.java index 198de7d78ca..d8bc5b5b1ec 100644 --- a/jdk/test/sun/security/krb5/auto/OkAsDelegate.java +++ b/jdk/test/sun/security/krb5/auto/OkAsDelegate.java @@ -24,6 +24,14 @@ /* * @test * @bug 6853328 7172701 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm OkAsDelegate false true true false false false * FORWARDABLE ticket not allowed, always fail * @run main/othervm OkAsDelegate true false false false false false diff --git a/jdk/test/sun/security/krb5/auto/OkAsDelegateXRealm.java b/jdk/test/sun/security/krb5/auto/OkAsDelegateXRealm.java index ce71314339e..77d7d08a2f9 100644 --- a/jdk/test/sun/security/krb5/auto/OkAsDelegateXRealm.java +++ b/jdk/test/sun/security/krb5/auto/OkAsDelegateXRealm.java @@ -24,6 +24,14 @@ /* * @test * @bug 6853328 7172701 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm OkAsDelegateXRealm false * KDC no OK-AS-DELEGATE, fail * @run main/othervm -Dtest.kdc.policy.ok-as-delegate OkAsDelegateXRealm true diff --git a/jdk/test/sun/security/krb5/auto/OnlyDesLogin.java b/jdk/test/sun/security/krb5/auto/OnlyDesLogin.java index c4b03d166f8..892a153528e 100644 --- a/jdk/test/sun/security/krb5/auto/OnlyDesLogin.java +++ b/jdk/test/sun/security/krb5/auto/OnlyDesLogin.java @@ -25,6 +25,13 @@ * @test * @bug 8014310 * @summary JAAS/Krb5LoginModule using des encytypes failure with NPE after JDK-8012679 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file OnlyDesLogin.java * @run main/othervm OnlyDesLogin */ diff --git a/jdk/test/sun/security/krb5/auto/PrincipalNameEquals.java b/jdk/test/sun/security/krb5/auto/PrincipalNameEquals.java index c4ae6b9aa9d..c911e160f36 100644 --- a/jdk/test/sun/security/krb5/auto/PrincipalNameEquals.java +++ b/jdk/test/sun/security/krb5/auto/PrincipalNameEquals.java @@ -25,6 +25,14 @@ * @test * @bug 7061379 * @summary [Kerberos] Cross-realm authentication fails, due to nameType problem + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file PrincipalNameEquals.java * @run main/othervm PrincipalNameEquals */ diff --git a/jdk/test/sun/security/krb5/auto/RRC.java b/jdk/test/sun/security/krb5/auto/RRC.java index ade12a40abe..7e5c8e0e59f 100644 --- a/jdk/test/sun/security/krb5/auto/RRC.java +++ b/jdk/test/sun/security/krb5/auto/RRC.java @@ -25,6 +25,14 @@ * @test * @bug 7077640 * @summary gss wrap for cfx doesn't handle rrc != 0 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file RRC.java * @run main/othervm RRC */ diff --git a/jdk/test/sun/security/krb5/auto/Renewal.java b/jdk/test/sun/security/krb5/auto/Renewal.java index fc9ab80e0d3..55ec2f9d838 100644 --- a/jdk/test/sun/security/krb5/auto/Renewal.java +++ b/jdk/test/sun/security/krb5/auto/Renewal.java @@ -27,11 +27,17 @@ * @summary Add kinit options and krb5.conf flags that allow users to * obtain renewable tickets and specify ticket lifetimes * @library ../../../../java/security/testlibrary/ + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file Renewal.java * @run main/othervm Renewal */ -import sun.security.jgss.GSSUtil; import sun.security.krb5.Config; import sun.security.krb5.internal.ccache.Credentials; import sun.security.krb5.internal.ccache.FileCredentialsCache; diff --git a/jdk/test/sun/security/krb5/auto/ReplayCacheExpunge.java b/jdk/test/sun/security/krb5/auto/ReplayCacheExpunge.java index da68ec3b7e1..d7aa4b0061c 100644 --- a/jdk/test/sun/security/krb5/auto/ReplayCacheExpunge.java +++ b/jdk/test/sun/security/krb5/auto/ReplayCacheExpunge.java @@ -24,6 +24,8 @@ /* * @test * @bug 8001326 + * @modules java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.rcache * @run main/othervm ReplayCacheExpunge 16 * @run main/othervm/fail ReplayCacheExpunge 15 * @summary when number of expired entries minus number of good entries diff --git a/jdk/test/sun/security/krb5/auto/ReplayCachePrecise.java b/jdk/test/sun/security/krb5/auto/ReplayCachePrecise.java index c23645bc11f..708392295f0 100644 --- a/jdk/test/sun/security/krb5/auto/ReplayCachePrecise.java +++ b/jdk/test/sun/security/krb5/auto/ReplayCachePrecise.java @@ -24,6 +24,9 @@ /* * @test * @bug 8001326 + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.rcache * @run main/othervm ReplayCachePrecise * @summary when there are 2 two AuthTime with the same time but different hash, * it's not a replay. diff --git a/jdk/test/sun/security/krb5/auto/ReplayCacheTest.java b/jdk/test/sun/security/krb5/auto/ReplayCacheTest.java index 79a4da79f2d..3a6ef72e42e 100644 --- a/jdk/test/sun/security/krb5/auto/ReplayCacheTest.java +++ b/jdk/test/sun/security/krb5/auto/ReplayCacheTest.java @@ -24,6 +24,14 @@ /* * @test * @bug 7118809 8001326 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm ReplayCacheTest jvm * @run main/othervm ReplayCacheTest dfl * @summary rcache deadlock diff --git a/jdk/test/sun/security/krb5/auto/ReplayCacheTestProc.java b/jdk/test/sun/security/krb5/auto/ReplayCacheTestProc.java index 5275b69b594..b30abb3e6fc 100644 --- a/jdk/test/sun/security/krb5/auto/ReplayCacheTestProc.java +++ b/jdk/test/sun/security/krb5/auto/ReplayCacheTestProc.java @@ -26,6 +26,16 @@ * @bug 7152176 * @summary More krb5 tests * @library ../../../../java/security/testlibrary/ + * @modules java.base/sun.misc + * java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab + * java.security.jgss/sun.security.krb5.internal.rcache * @compile -XDignore.symbol.file ReplayCacheTestProc.java * @run main/othervm/timeout=100 ReplayCacheTestProc */ diff --git a/jdk/test/sun/security/krb5/auto/S4U2proxy.java b/jdk/test/sun/security/krb5/auto/S4U2proxy.java index 10e565279f0..29c85dc7757 100644 --- a/jdk/test/sun/security/krb5/auto/S4U2proxy.java +++ b/jdk/test/sun/security/krb5/auto/S4U2proxy.java @@ -25,6 +25,14 @@ * @test * @bug 6355584 8044215 * @summary Introduce constrained Kerberos delegation + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file S4U2proxy.java * @run main/othervm S4U2proxy krb5 * @run main/othervm S4U2proxy spnego diff --git a/jdk/test/sun/security/krb5/auto/S4U2proxyGSS.java b/jdk/test/sun/security/krb5/auto/S4U2proxyGSS.java index f2f0b305e05..8fb704bcbc8 100644 --- a/jdk/test/sun/security/krb5/auto/S4U2proxyGSS.java +++ b/jdk/test/sun/security/krb5/auto/S4U2proxyGSS.java @@ -25,6 +25,14 @@ * @test * @bug 6355584 * @summary Introduce constrained Kerberos delegation + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file S4U2proxyGSS.java * @run main/othervm -Djavax.security.auth.useSubjectCredsOnly=false S4U2proxyGSS krb5 * @run main/othervm -Djavax.security.auth.useSubjectCredsOnly=false S4U2proxyGSS spnego diff --git a/jdk/test/sun/security/krb5/auto/S4U2self.java b/jdk/test/sun/security/krb5/auto/S4U2self.java index a6c4b21c192..0881e9622b9 100644 --- a/jdk/test/sun/security/krb5/auto/S4U2self.java +++ b/jdk/test/sun/security/krb5/auto/S4U2self.java @@ -25,6 +25,14 @@ * @test * @bug 6355584 * @summary Introduce constrained Kerberos delegation + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file S4U2self.java * @run main/othervm -Dsun.security.krb5.debug=false S4U2self krb5 0 * @run main/othervm/fail -Dsun.security.krb5.debug=false S4U2self krb5 1 diff --git a/jdk/test/sun/security/krb5/auto/S4U2selfAsServer.java b/jdk/test/sun/security/krb5/auto/S4U2selfAsServer.java index 467129c16e3..26390ca2904 100644 --- a/jdk/test/sun/security/krb5/auto/S4U2selfAsServer.java +++ b/jdk/test/sun/security/krb5/auto/S4U2selfAsServer.java @@ -25,6 +25,14 @@ * @test * @bug 6355584 * @summary Introduce constrained Kerberos delegation + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file S4U2selfAsServer.java * @run main/othervm S4U2selfAsServer krb5 * @run main/othervm S4U2selfAsServer spnego diff --git a/jdk/test/sun/security/krb5/auto/S4U2selfAsServerGSS.java b/jdk/test/sun/security/krb5/auto/S4U2selfAsServerGSS.java index 0ff2b7bb53d..7375502f422 100644 --- a/jdk/test/sun/security/krb5/auto/S4U2selfAsServerGSS.java +++ b/jdk/test/sun/security/krb5/auto/S4U2selfAsServerGSS.java @@ -25,6 +25,14 @@ * @test * @bug 6355584 * @summary Introduce constrained Kerberos delegation + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file S4U2selfAsServerGSS.java * @run main/othervm -Djavax.security.auth.useSubjectCredsOnly=false S4U2selfAsServerGSS krb5 * @run main/othervm -Djavax.security.auth.useSubjectCredsOnly=false S4U2selfAsServerGSS spnego diff --git a/jdk/test/sun/security/krb5/auto/S4U2selfGSS.java b/jdk/test/sun/security/krb5/auto/S4U2selfGSS.java index f060c787ffb..48250a94edb 100644 --- a/jdk/test/sun/security/krb5/auto/S4U2selfGSS.java +++ b/jdk/test/sun/security/krb5/auto/S4U2selfGSS.java @@ -25,6 +25,14 @@ * @test * @bug 6355584 * @summary Introduce constrained Kerberos delegation + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file S4U2selfGSS.java * @run main/othervm -Dsun.security.krb5.debug=false S4U2selfGSS krb5 * @run main/othervm -Dsun.security.krb5.debug=false S4U2selfGSS spnego diff --git a/jdk/test/sun/security/krb5/auto/SPNEGO.java b/jdk/test/sun/security/krb5/auto/SPNEGO.java index 250a942f0d4..da9fdab1f89 100644 --- a/jdk/test/sun/security/krb5/auto/SPNEGO.java +++ b/jdk/test/sun/security/krb5/auto/SPNEGO.java @@ -25,6 +25,14 @@ * @test * @bug 7040151 * @summary SPNEGO GSS code does not parse tokens in accordance to RFC 2478 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file SPNEGO.java * @run main/othervm SPNEGO */ diff --git a/jdk/test/sun/security/krb5/auto/SSL.java b/jdk/test/sun/security/krb5/auto/SSL.java index f3d7f134a11..8e80842bb4a 100644 --- a/jdk/test/sun/security/krb5/auto/SSL.java +++ b/jdk/test/sun/security/krb5/auto/SSL.java @@ -26,6 +26,14 @@ * @bug 6894643 6913636 8005523 8025123 * @summary Test JSSE Kerberos ciphersuite + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm SSL TLS_KRB5_WITH_RC4_128_SHA * @run main/othervm SSL TLS_KRB5_WITH_RC4_128_SHA unbound * @run main/othervm SSL TLS_KRB5_WITH_RC4_128_SHA unbound sni diff --git a/jdk/test/sun/security/krb5/auto/SaslBasic.java b/jdk/test/sun/security/krb5/auto/SaslBasic.java index 3fdd3534ed4..f00b3254c68 100644 --- a/jdk/test/sun/security/krb5/auto/SaslBasic.java +++ b/jdk/test/sun/security/krb5/auto/SaslBasic.java @@ -25,6 +25,14 @@ * @test * @bug 7110803 * @summary SASL service for multiple hostnames + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab + * java.security.sasl * @compile -XDignore.symbol.file SaslBasic.java * @run main/othervm SaslBasic bound * @run main/othervm SaslBasic unbound diff --git a/jdk/test/sun/security/krb5/auto/SaslGSS.java b/jdk/test/sun/security/krb5/auto/SaslGSS.java index ec541935308..edc7d3634d4 100644 --- a/jdk/test/sun/security/krb5/auto/SaslGSS.java +++ b/jdk/test/sun/security/krb5/auto/SaslGSS.java @@ -26,6 +26,15 @@ * @bug 8012082 8019267 * @summary SASL: auth-conf negotiated, but unencrypted data is accepted, * reset to unencrypt + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab + * java.security.sasl * @compile -XDignore.symbol.file SaslGSS.java * @run main/othervm SaslGSS */ diff --git a/jdk/test/sun/security/krb5/auto/SaslUnbound.java b/jdk/test/sun/security/krb5/auto/SaslUnbound.java index 797d66b94be..2693c9019b4 100644 --- a/jdk/test/sun/security/krb5/auto/SaslUnbound.java +++ b/jdk/test/sun/security/krb5/auto/SaslUnbound.java @@ -25,6 +25,14 @@ * @test * @bug 8001104 * @summary Unbound SASL service: the GSSAPI/krb5 mech + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab + * java.security.sasl * @compile -XDignore.symbol.file SaslUnbound.java * @run main/othervm SaslUnbound 0 * @run main/othervm/fail SaslUnbound 1 diff --git a/jdk/test/sun/security/krb5/auto/SpnegoLifeTime.java b/jdk/test/sun/security/krb5/auto/SpnegoLifeTime.java index 906cfbee786..3d5a9e46326 100644 --- a/jdk/test/sun/security/krb5/auto/SpnegoLifeTime.java +++ b/jdk/test/sun/security/krb5/auto/SpnegoLifeTime.java @@ -25,6 +25,14 @@ * @test * @bug 8000653 * @summary SPNEGO tests fail at context.getDelegCred().getRemainingInitLifetime(mechOid) + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file SpnegoLifeTime.java * @run main/othervm SpnegoLifeTime */ diff --git a/jdk/test/sun/security/krb5/auto/SpnegoReqFlags.java b/jdk/test/sun/security/krb5/auto/SpnegoReqFlags.java index 62c55048d1f..fe35bfe3691 100644 --- a/jdk/test/sun/security/krb5/auto/SpnegoReqFlags.java +++ b/jdk/test/sun/security/krb5/auto/SpnegoReqFlags.java @@ -24,6 +24,14 @@ /* * @test * @bug 6815182 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm SpnegoReqFlags * @summary GSSAPI/SPNEGO does not work with server using MIT Kerberos library */ diff --git a/jdk/test/sun/security/krb5/auto/TcpTimeout.java b/jdk/test/sun/security/krb5/auto/TcpTimeout.java index 45699fbe5ad..73372e47bae 100644 --- a/jdk/test/sun/security/krb5/auto/TcpTimeout.java +++ b/jdk/test/sun/security/krb5/auto/TcpTimeout.java @@ -24,6 +24,13 @@ /* * @test * @bug 6952519 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file TcpTimeout.java * @run main/othervm TcpTimeout * @summary kdc_timeout is not being honoured when using TCP diff --git a/jdk/test/sun/security/krb5/auto/Test5653.java b/jdk/test/sun/security/krb5/auto/Test5653.java index 4384b87ee0b..a5c935d8215 100644 --- a/jdk/test/sun/security/krb5/auto/Test5653.java +++ b/jdk/test/sun/security/krb5/auto/Test5653.java @@ -24,6 +24,14 @@ /* * @test * @bug 6895424 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm Test5653 * @summary RFC 5653 */ diff --git a/jdk/test/sun/security/krb5/auto/TwoOrThree.java b/jdk/test/sun/security/krb5/auto/TwoOrThree.java index 5af545be4a1..1eb02205af4 100644 --- a/jdk/test/sun/security/krb5/auto/TwoOrThree.java +++ b/jdk/test/sun/security/krb5/auto/TwoOrThree.java @@ -25,6 +25,14 @@ * @test * @bug 8005447 * @summary default principal can act as anyone + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file TwoOrThree.java * @run main/othervm TwoOrThree first first * @run main/othervm/fail TwoOrThree first second diff --git a/jdk/test/sun/security/krb5/auto/TwoPrinces.java b/jdk/test/sun/security/krb5/auto/TwoPrinces.java index 30f16e96a25..0f30e9475ed 100644 --- a/jdk/test/sun/security/krb5/auto/TwoPrinces.java +++ b/jdk/test/sun/security/krb5/auto/TwoPrinces.java @@ -24,6 +24,14 @@ /* * @test * @bug 6894072 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file TwoPrinces.java * @run main/othervm TwoPrinces * @summary always refresh keytab diff --git a/jdk/test/sun/security/krb5/auto/TwoTab.java b/jdk/test/sun/security/krb5/auto/TwoTab.java index dd2cf96a8a4..f3def8b038e 100644 --- a/jdk/test/sun/security/krb5/auto/TwoTab.java +++ b/jdk/test/sun/security/krb5/auto/TwoTab.java @@ -25,6 +25,14 @@ * @test * @bug 7152176 * @summary More krb5 tests + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file TwoTab.java * @run main/othervm TwoTab */ diff --git a/jdk/test/sun/security/krb5/auto/UdpTcp.java b/jdk/test/sun/security/krb5/auto/UdpTcp.java index ae54b793527..66c82438a2e 100644 --- a/jdk/test/sun/security/krb5/auto/UdpTcp.java +++ b/jdk/test/sun/security/krb5/auto/UdpTcp.java @@ -24,6 +24,13 @@ /* * @test * @bug 4966382 8039132 + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm UdpTcp UDP * @run main/othervm UdpTcp TCP * @summary udp or tcp diff --git a/jdk/test/sun/security/krb5/auto/UnboundService.java b/jdk/test/sun/security/krb5/auto/UnboundService.java index 1327f78c995..a0bc937b29e 100644 --- a/jdk/test/sun/security/krb5/auto/UnboundService.java +++ b/jdk/test/sun/security/krb5/auto/UnboundService.java @@ -25,6 +25,14 @@ * @test * @bug 8001104 * @summary Unbound SASL service: the GSSAPI/krb5 mech + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.jgss + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file UnboundService.java * @run main/othervm UnboundService null null * @run main/othervm UnboundService server/host.rabbit.hole null diff --git a/jdk/test/sun/security/krb5/auto/Unreachable.java b/jdk/test/sun/security/krb5/auto/Unreachable.java index 52339786a9f..670d33afc8e 100644 --- a/jdk/test/sun/security/krb5/auto/Unreachable.java +++ b/jdk/test/sun/security/krb5/auto/Unreachable.java @@ -25,6 +25,7 @@ * @test * @bug 7162687 * @summary enhance KDC server availability detection + * @modules java.security.jgss/sun.security.krb5 * @compile -XDignore.symbol.file Unreachable.java * @run main/othervm/timeout=10 Unreachable */ diff --git a/jdk/test/sun/security/krb5/auto/UseCacheAndStoreKey.java b/jdk/test/sun/security/krb5/auto/UseCacheAndStoreKey.java index 3769643e09a..ca1229b90b9 100644 --- a/jdk/test/sun/security/krb5/auto/UseCacheAndStoreKey.java +++ b/jdk/test/sun/security/krb5/auto/UseCacheAndStoreKey.java @@ -26,6 +26,13 @@ * @bug 7201053 * @summary Krb5LoginModule shows NPE when both useTicketCache and storeKey * are set to true + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @compile -XDignore.symbol.file UseCacheAndStoreKey.java * @run main/othervm UseCacheAndStoreKey */ diff --git a/jdk/test/sun/security/krb5/auto/W83.java b/jdk/test/sun/security/krb5/auto/W83.java index dea4e765e40..7de5912b94e 100644 --- a/jdk/test/sun/security/krb5/auto/W83.java +++ b/jdk/test/sun/security/krb5/auto/W83.java @@ -26,6 +26,13 @@ * @bug 6932525 6951366 6959292 * @summary kerberos login failure on win2008 with AD set to win2000 compat mode * and cannot login if session key and preauth does not use the same etype + * @modules java.base/sun.net.spi.nameservice + * java.base/sun.security.util + * java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ccache + * java.security.jgss/sun.security.krb5.internal.crypto + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm -D6932525 W83 * @run main/othervm -D6959292 W83 */ diff --git a/jdk/test/sun/security/krb5/canonicalize/Test.java b/jdk/test/sun/security/krb5/canonicalize/Test.java index 9340163fbb4..53012b3be51 100644 --- a/jdk/test/sun/security/krb5/canonicalize/Test.java +++ b/jdk/test/sun/security/krb5/canonicalize/Test.java @@ -24,6 +24,8 @@ * @test * @bug 6682516 * @summary SPNEGO_HTTP_AUTH/WWW_KRB and SPNEGO_HTTP_AUTH/WWW_SPNEGO failed on all non-windows platforms + * @modules java.base/sun.net.spi.nameservice + * java.security.jgss/sun.security.krb5 * @run main/othervm -Dsun.net.spi.nameservice.provider.1=ns,mock -Djava.security.krb5.conf=krb5.conf Test */ diff --git a/jdk/test/sun/security/krb5/ccache/CorruptedCC.java b/jdk/test/sun/security/krb5/ccache/CorruptedCC.java index 355e2ff6c0e..e37e9f585a7 100644 --- a/jdk/test/sun/security/krb5/ccache/CorruptedCC.java +++ b/jdk/test/sun/security/krb5/ccache/CorruptedCC.java @@ -25,6 +25,8 @@ * @test * @bug 8028780 * @summary JDK KRB5 module throws OutOfMemoryError when CCache is corrupt + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal.ccache * @run main/othervm -Xmx8m CorruptedCC */ import java.nio.file.Files; diff --git a/jdk/test/sun/security/krb5/ccache/DefaultFile.java b/jdk/test/sun/security/krb5/ccache/DefaultFile.java index b2348e3507f..a513e956964 100644 --- a/jdk/test/sun/security/krb5/ccache/DefaultFile.java +++ b/jdk/test/sun/security/krb5/ccache/DefaultFile.java @@ -25,6 +25,7 @@ * @test * @bug 8054817 * @summary File ccache only recognizes Linux and Solaris defaults + * @modules java.security.jgss/sun.security.krb5.internal.ccache */ import sun.security.krb5.internal.ccache.FileCredentialsCache; diff --git a/jdk/test/sun/security/krb5/ccache/EmptyCC.java b/jdk/test/sun/security/krb5/ccache/EmptyCC.java index 4114edb0208..28281584f16 100644 --- a/jdk/test/sun/security/krb5/ccache/EmptyCC.java +++ b/jdk/test/sun/security/krb5/ccache/EmptyCC.java @@ -27,6 +27,8 @@ * @bug 8001208 * @summary NPE in sun.security.krb5.Credentials.acquireDefaultCreds() * @library ../../../../java/security/testlibrary/ + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal.ccache * @compile -XDignore.symbol.file EmptyCC.java * @run main EmptyCC tmpcc * @run main EmptyCC FILE:tmpcc diff --git a/jdk/test/sun/security/krb5/ccache/EmptyRealmCC.java b/jdk/test/sun/security/krb5/ccache/EmptyRealmCC.java index 315cc06a35e..2796653df3c 100644 --- a/jdk/test/sun/security/krb5/ccache/EmptyRealmCC.java +++ b/jdk/test/sun/security/krb5/ccache/EmptyRealmCC.java @@ -25,6 +25,8 @@ * @test * @bug 8048073 * @summary Cannot read ccache entry with a realm-less service name + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal.ccache * @compile -XDignore.symbol.file EmptyRealmCC.java * @run main EmptyRealmCC */ diff --git a/jdk/test/sun/security/krb5/ccache/TimeInCCache.java b/jdk/test/sun/security/krb5/ccache/TimeInCCache.java index e81ff909b98..5a9364fd8e1 100644 --- a/jdk/test/sun/security/krb5/ccache/TimeInCCache.java +++ b/jdk/test/sun/security/krb5/ccache/TimeInCCache.java @@ -23,6 +23,8 @@ /* * @test * @bug 6590930 + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal.ccache * @run main/othervm TimeInCCache * @summary read/write does not match for ccache */ diff --git a/jdk/test/sun/security/krb5/config/ConfigWithQuotations.java b/jdk/test/sun/security/krb5/config/ConfigWithQuotations.java index c1286f8cb3a..6dfa2b58947 100644 --- a/jdk/test/sun/security/krb5/config/ConfigWithQuotations.java +++ b/jdk/test/sun/security/krb5/config/ConfigWithQuotations.java @@ -23,6 +23,7 @@ /* * @test * @bug 6714845 + * @modules java.security.jgss/sun.security.krb5 * @run main/othervm ConfigWithQuotations * @summary Quotes in Kerberos configuration file are included in the values */ diff --git a/jdk/test/sun/security/krb5/config/DefUdpLimit.java b/jdk/test/sun/security/krb5/config/DefUdpLimit.java index ae1712d0b1a..58c6c6dacfb 100644 --- a/jdk/test/sun/security/krb5/config/DefUdpLimit.java +++ b/jdk/test/sun/security/krb5/config/DefUdpLimit.java @@ -25,6 +25,7 @@ * @test * @bug 8009875 * @summary Provide a default udp_preference_limit for krb5.conf + * @modules java.security.jgss/sun.security.krb5 * @compile -XDignore.symbol.file DefUdpLimit.java * @run main/othervm DefUdpLimit -1 1465 * @run main/othervm DefUdpLimit 0 0 diff --git a/jdk/test/sun/security/krb5/config/DnsFallback.java b/jdk/test/sun/security/krb5/config/DnsFallback.java index cf5e6bac942..1def972f7d6 100644 --- a/jdk/test/sun/security/krb5/config/DnsFallback.java +++ b/jdk/test/sun/security/krb5/config/DnsFallback.java @@ -23,6 +23,7 @@ /* * @test * @bug 6673164 6552334 8077102 + * @modules java.security.jgss/sun.security.krb5 * @run main/othervm DnsFallback * @summary fix dns_fallback parse error, and use dns by default */ diff --git a/jdk/test/sun/security/krb5/config/Duplicates.java b/jdk/test/sun/security/krb5/config/Duplicates.java index 41d0fa9b99d..6e5603884a5 100644 --- a/jdk/test/sun/security/krb5/config/Duplicates.java +++ b/jdk/test/sun/security/krb5/config/Duplicates.java @@ -23,6 +23,7 @@ /* * @test * @bug 7184246 + * @modules java.security.jgss/sun.security.krb5 * @compile -XDignore.symbol.file Duplicates.java * @run main/othervm Duplicates * @summary Simplify Config.get() of krb5 diff --git a/jdk/test/sun/security/krb5/config/Duration.java b/jdk/test/sun/security/krb5/config/Duration.java index d9c0f3961c7..a4c57cd2d6e 100644 --- a/jdk/test/sun/security/krb5/config/Duration.java +++ b/jdk/test/sun/security/krb5/config/Duration.java @@ -26,6 +26,7 @@ * @bug 8044500 * @summary Add kinit options and krb5.conf flags that allow users to * obtain renewable tickets and specify ticket lifetimes + * @modules java.security.jgss/sun.security.krb5 * @compile -XDignore.symbol.file Duration.java * @run main Duration */ diff --git a/jdk/test/sun/security/krb5/config/ExtraLines.java b/jdk/test/sun/security/krb5/config/ExtraLines.java index babb0c0749d..a4603aa99d1 100644 --- a/jdk/test/sun/security/krb5/config/ExtraLines.java +++ b/jdk/test/sun/security/krb5/config/ExtraLines.java @@ -23,6 +23,7 @@ /* * @test * @bug 8036971 + * @modules java.security.jgss/sun.security.krb5 * @compile -XDignore.symbol.file ExtraLines.java * @run main/othervm ExtraLines * @summary krb5.conf does not accept directive lines before the first section diff --git a/jdk/test/sun/security/krb5/config/Include.java b/jdk/test/sun/security/krb5/config/Include.java index 945f8a0fc96..b253b8132db 100644 --- a/jdk/test/sun/security/krb5/config/Include.java +++ b/jdk/test/sun/security/krb5/config/Include.java @@ -25,6 +25,7 @@ * @test * @bug 8029994 * @summary Support "include" and "includedir" in krb5.conf + * @modules java.security.jgss/sun.security.krb5 * @compile -XDignore.symbol.file Include.java * @run main/othervm Include */ diff --git a/jdk/test/sun/security/krb5/config/KdcDefaultOptions.java b/jdk/test/sun/security/krb5/config/KdcDefaultOptions.java index fb920635e4e..a0b2f37c4c1 100644 --- a/jdk/test/sun/security/krb5/config/KdcDefaultOptions.java +++ b/jdk/test/sun/security/krb5/config/KdcDefaultOptions.java @@ -24,6 +24,8 @@ * @test * @bug 7195426 * @summary kdc_default_options not supported correctly + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal * @compile -XDignore.symbol.file KdcDefaultOptions.java * @run main/othervm KdcDefaultOptions */ diff --git a/jdk/test/sun/security/krb5/config/ParseCAPaths.java b/jdk/test/sun/security/krb5/config/ParseCAPaths.java index 18b43470842..19f1f09f235 100644 --- a/jdk/test/sun/security/krb5/config/ParseCAPaths.java +++ b/jdk/test/sun/security/krb5/config/ParseCAPaths.java @@ -23,6 +23,7 @@ /* * @test * @bug 6789935 8012615 + * @modules java.security.jgss/sun.security.krb5 * @run main/othervm ParseCAPaths * @summary cross-realm capath search error */ diff --git a/jdk/test/sun/security/krb5/config/ParseConfig.java b/jdk/test/sun/security/krb5/config/ParseConfig.java index 3a73956ae95..2aa80eafebc 100644 --- a/jdk/test/sun/security/krb5/config/ParseConfig.java +++ b/jdk/test/sun/security/krb5/config/ParseConfig.java @@ -23,6 +23,7 @@ /* * @test * @bug 6319046 8055045 + * @modules java.security.jgss/sun.security.krb5 * @compile -XDignore.symbol.file ParseConfig.java * @run main/othervm ParseConfig * @summary Problem with parsing krb5.conf diff --git a/jdk/test/sun/security/krb5/config/SCDynamicConfigTest.java b/jdk/test/sun/security/krb5/config/SCDynamicConfigTest.java index b749927312b..40ec7d6c386 100644 --- a/jdk/test/sun/security/krb5/config/SCDynamicConfigTest.java +++ b/jdk/test/sun/security/krb5/config/SCDynamicConfigTest.java @@ -25,6 +25,7 @@ * @test * @bug 7184246 * @summary Simplify Config.get() of krb5 + * @modules java.security.jgss/sun.security.krb5 */ import java.lang.reflect.Field; import java.lang.reflect.Method; diff --git a/jdk/test/sun/security/krb5/config/YesNo.java b/jdk/test/sun/security/krb5/config/YesNo.java index c25c8279663..22e5144d7c9 100644 --- a/jdk/test/sun/security/krb5/config/YesNo.java +++ b/jdk/test/sun/security/krb5/config/YesNo.java @@ -25,6 +25,8 @@ * @test * @bug 8029995 * @summary accept yes/no for boolean krb5.conf settings + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal.crypto * @compile -XDignore.symbol.file YesNo.java * @run main/othervm YesNo */ diff --git a/jdk/test/sun/security/krb5/etype/ETypeOrder.java b/jdk/test/sun/security/krb5/etype/ETypeOrder.java index 9437b16ed05..dabe65c6717 100644 --- a/jdk/test/sun/security/krb5/etype/ETypeOrder.java +++ b/jdk/test/sun/security/krb5/etype/ETypeOrder.java @@ -23,6 +23,7 @@ /* * @test * @bug 6844907 + * @modules java.security.jgss/sun.security.krb5.internal.crypto * @run main/othervm ETypeOrder * @summary krb5 etype order should be from strong to weak */ diff --git a/jdk/test/sun/security/krb5/etype/WeakCrypto.java b/jdk/test/sun/security/krb5/etype/WeakCrypto.java index e7a109f6f33..fcc59d4a9f9 100644 --- a/jdk/test/sun/security/krb5/etype/WeakCrypto.java +++ b/jdk/test/sun/security/krb5/etype/WeakCrypto.java @@ -23,6 +23,8 @@ /* * @test * @bug 6844909 8012679 + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal.crypto * @run main/othervm WeakCrypto * @run main/othervm WeakCrypto true * @run main/othervm WeakCrypto false diff --git a/jdk/test/sun/security/krb5/ktab/FileKeyTab.java b/jdk/test/sun/security/krb5/ktab/FileKeyTab.java index ab6fb64da91..10e92591c9f 100644 --- a/jdk/test/sun/security/krb5/ktab/FileKeyTab.java +++ b/jdk/test/sun/security/krb5/ktab/FileKeyTab.java @@ -24,6 +24,8 @@ * @test * @bug 7144530 * @summary KeyTab.getInstance(String) no longer handles keyTabNames with "file:" prefix + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal.ktab */ import java.io.File; import sun.security.krb5.PrincipalName; diff --git a/jdk/test/sun/security/krb5/ktab/HighestKvno.java b/jdk/test/sun/security/krb5/ktab/HighestKvno.java index 92e3aebd630..894d36b89da 100644 --- a/jdk/test/sun/security/krb5/ktab/HighestKvno.java +++ b/jdk/test/sun/security/krb5/ktab/HighestKvno.java @@ -24,6 +24,8 @@ * @test * @bug 6867665 * @bug 6875033 + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal.ktab * @run main/othervm HighestKvno * @summary Problem with keytabs with multiple kvno's (key versions) */ diff --git a/jdk/test/sun/security/krb5/ktab/KeyString.java b/jdk/test/sun/security/krb5/ktab/KeyString.java index c3cb7f0224a..b7b2e1da5fe 100644 --- a/jdk/test/sun/security/krb5/ktab/KeyString.java +++ b/jdk/test/sun/security/krb5/ktab/KeyString.java @@ -24,6 +24,9 @@ * @test * @bug 6917791 * @summary KeyTabEntry, when the byte value smaller then 16, the string drop '0' + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal + * java.security.jgss/sun.security.krb5.internal.ktab */ import sun.security.krb5.internal.ktab.KeyTabEntry; diff --git a/jdk/test/sun/security/krb5/ktab/KeyTabIndex.java b/jdk/test/sun/security/krb5/ktab/KeyTabIndex.java index 26eb5621939..f65e06a7a5f 100644 --- a/jdk/test/sun/security/krb5/ktab/KeyTabIndex.java +++ b/jdk/test/sun/security/krb5/ktab/KeyTabIndex.java @@ -24,6 +24,8 @@ * @test * @bug 6919610 * @summary KeyTabInputStream uses static field for per-instance value + * @modules java.security.jgss/sun.security.krb5 + * java.security.jgss/sun.security.krb5.internal.ktab */ import sun.security.krb5.PrincipalName; import sun.security.krb5.internal.ktab.KeyTab; diff --git a/jdk/test/sun/security/krb5/name/Constructors.java b/jdk/test/sun/security/krb5/name/Constructors.java index 71243e71c32..c57a731d5ce 100644 --- a/jdk/test/sun/security/krb5/name/Constructors.java +++ b/jdk/test/sun/security/krb5/name/Constructors.java @@ -24,6 +24,7 @@ * @test * @bug 6966259 * @summary Make PrincipalName and Realm immutable + * @modules java.security.jgss/sun.security.krb5 * @run main/othervm Constructors */ diff --git a/jdk/test/sun/security/krb5/name/Immutable.java b/jdk/test/sun/security/krb5/name/Immutable.java index 04bed4b3c7a..d9de2544e3b 100644 --- a/jdk/test/sun/security/krb5/name/Immutable.java +++ b/jdk/test/sun/security/krb5/name/Immutable.java @@ -25,6 +25,7 @@ * @test * @bug 8005460 * @summary [findbugs] Probably returned array should be cloned + * @modules java.security.jgss/sun.security.krb5 */ import sun.security.krb5.PrincipalName; diff --git a/jdk/test/sun/security/krb5/tools/KtabZero.java b/jdk/test/sun/security/krb5/tools/KtabZero.java index 8a4a6a4fcd2..bc1b1d32b8f 100644 --- a/jdk/test/sun/security/krb5/tools/KtabZero.java +++ b/jdk/test/sun/security/krb5/tools/KtabZero.java @@ -33,6 +33,7 @@ import java.nio.file.Paths; * @test * @bug 8014196 * @summary ktab creates a file with zero kt_vno + * @modules java.security.jgss/sun.security.krb5.internal.ktab */ public class KtabZero { diff --git a/jdk/test/sun/security/pkcs/EncryptedPrivateKeyInfo/EncryptedPKInfoEqualsHashCode.java b/jdk/test/sun/security/pkcs/EncryptedPrivateKeyInfo/EncryptedPKInfoEqualsHashCode.java index a38877f3698..c77528958e9 100644 --- a/jdk/test/sun/security/pkcs/EncryptedPrivateKeyInfo/EncryptedPKInfoEqualsHashCode.java +++ b/jdk/test/sun/security/pkcs/EncryptedPrivateKeyInfo/EncryptedPKInfoEqualsHashCode.java @@ -26,6 +26,8 @@ * @author Gary Ellison * @bug 4170635 * @summary Verify equals()/hashCode() contract honored + * @modules java.base/sun.security.pkcs + * java.base/sun.security.x509 */ import java.io.*; diff --git a/jdk/test/sun/security/pkcs/pkcs9/UnknownAttribute.java b/jdk/test/sun/security/pkcs/pkcs9/UnknownAttribute.java index 20cc24e627b..29b0b17eafe 100644 --- a/jdk/test/sun/security/pkcs/pkcs9/UnknownAttribute.java +++ b/jdk/test/sun/security/pkcs/pkcs9/UnknownAttribute.java @@ -25,6 +25,9 @@ * @test * @bug 8011867 * @summary Accept unknown PKCS #9 attributes + * @modules java.base/sun.misc + * java.base/sun.security.pkcs + * java.base/sun.security.util */ import java.io.*; diff --git a/jdk/test/sun/security/pkcs/pkcs9/UnstructuredName.java b/jdk/test/sun/security/pkcs/pkcs9/UnstructuredName.java index e19e4aa597b..caab415c600 100644 --- a/jdk/test/sun/security/pkcs/pkcs9/UnstructuredName.java +++ b/jdk/test/sun/security/pkcs/pkcs9/UnstructuredName.java @@ -25,6 +25,7 @@ * @test * @bug 8016916 * @summary UnstructuredName should support DirectoryString + * @modules java.base/sun.security.pkcs10 */ import java.util.Base64; diff --git a/jdk/test/sun/security/pkcs11/KeyStore/Basic.java b/jdk/test/sun/security/pkcs11/KeyStore/Basic.java index 8519a2f0bc2..09b2f398ce3 100644 --- a/jdk/test/sun/security/pkcs11/KeyStore/Basic.java +++ b/jdk/test/sun/security/pkcs11/KeyStore/Basic.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2006, 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 @@ -23,7 +23,6 @@ import java.io.*; import java.util.*; -import java.lang.reflect.*; import java.security.KeyStore; import java.security.KeyStoreException; diff --git a/jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.java b/jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.java index 89f98bc0850..e97e3664dc7 100644 --- a/jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.java +++ b/jdk/test/sun/security/pkcs11/Provider/ConfigQuotedString.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2004, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2004, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,6 @@ import java.io.*; import java.util.*; -import java.lang.reflect.*; import java.security.*; import javax.security.auth.callback.*; diff --git a/jdk/test/sun/security/pkcs11/Provider/Login.java b/jdk/test/sun/security/pkcs11/Provider/Login.java index 282c19b5367..8b8dbe8f6ab 100644 --- a/jdk/test/sun/security/pkcs11/Provider/Login.java +++ b/jdk/test/sun/security/pkcs11/Provider/Login.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2004, 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 @@ -23,7 +23,6 @@ import java.io.*; import java.util.*; -import java.lang.reflect.*; import java.security.*; import javax.security.auth.callback.*; diff --git a/jdk/test/sun/security/pkcs11/ec/TestCurves.java b/jdk/test/sun/security/pkcs11/ec/TestCurves.java index fb9cd836ad6..6451e41514b 100644 --- a/jdk/test/sun/security/pkcs11/ec/TestCurves.java +++ b/jdk/test/sun/security/pkcs11/ec/TestCurves.java @@ -27,6 +27,7 @@ * @summary Basic consistency test for all curves using ECDSA and ECDH * @author Andreas Sterbenz * @library .. + * @modules jdk.crypto.pkcs11/sun.security.pkcs11.wrapper * @compile -XDignore.symbol.file TestCurves.java * @run main TestCurves * @key randomness diff --git a/jdk/test/sun/security/pkcs11/ec/TestECDH2.java b/jdk/test/sun/security/pkcs11/ec/TestECDH2.java index 02ffd38ee0c..d5b03ae32aa 100644 --- a/jdk/test/sun/security/pkcs11/ec/TestECDH2.java +++ b/jdk/test/sun/security/pkcs11/ec/TestECDH2.java @@ -28,6 +28,7 @@ * example data in "Suite B Implementer's Guide to FIPS 186-3". * @library .. * @library ../../../../java/security/testlibrary + * @modules java.base/sun.security.util * @compile -XDignore.symbol.file TestECDH2.java * @run main TestECDH2 */ diff --git a/jdk/test/sun/security/pkcs11/ec/TestECDSA2.java b/jdk/test/sun/security/pkcs11/ec/TestECDSA2.java index 054402590c2..b3f234a5b0f 100644 --- a/jdk/test/sun/security/pkcs11/ec/TestECDSA2.java +++ b/jdk/test/sun/security/pkcs11/ec/TestECDSA2.java @@ -28,6 +28,7 @@ * example data in "Suite B Implementer's Guide to FIPS 186-3". * @library .. * @library ../../../../java/security/testlibrary + * @modules java.base/sun.security.util * @compile -XDignore.symbol.file TestECDSA2.java * @run main TestECDSA2 */ diff --git a/jdk/test/sun/security/pkcs11/fips/ClientJSSEServerJSSE.java b/jdk/test/sun/security/pkcs11/fips/ClientJSSEServerJSSE.java index ed5d9aa567e..384711097b5 100644 --- a/jdk/test/sun/security/pkcs11/fips/ClientJSSEServerJSSE.java +++ b/jdk/test/sun/security/pkcs11/fips/ClientJSSEServerJSSE.java @@ -27,6 +27,7 @@ * @summary Verify that all ciphersuites work in FIPS mode * @library .. * @author Andreas Sterbenz + * @modules java.base/com.sun.net.ssl.internal.ssl * @run main/manual ClientJSSEServerJSSE */ diff --git a/jdk/test/sun/security/pkcs11/fips/TrustManagerTest.java b/jdk/test/sun/security/pkcs11/fips/TrustManagerTest.java index 76c5dadfd64..743b4562b87 100644 --- a/jdk/test/sun/security/pkcs11/fips/TrustManagerTest.java +++ b/jdk/test/sun/security/pkcs11/fips/TrustManagerTest.java @@ -27,6 +27,7 @@ * @summary Verify that the SunJSSE trustmanager works correctly in FIPS mode * @author Andreas Sterbenz * @library .. + * @modules java.base/com.sun.net.ssl.internal.ssl * @run main/othervm TrustManagerTest */ diff --git a/jdk/test/sun/security/pkcs11/tls/TestKeyMaterial.java b/jdk/test/sun/security/pkcs11/tls/TestKeyMaterial.java index e32f6c3c19f..99636d0e2aa 100644 --- a/jdk/test/sun/security/pkcs11/tls/TestKeyMaterial.java +++ b/jdk/test/sun/security/pkcs11/tls/TestKeyMaterial.java @@ -27,6 +27,7 @@ * @summary Known-answer-test for TlsKeyMaterial generator * @author Andreas Sterbenz * @library .. + * @modules java.base/sun.security.internal.spec */ import java.io.*; diff --git a/jdk/test/sun/security/pkcs11/tls/TestMasterSecret.java b/jdk/test/sun/security/pkcs11/tls/TestMasterSecret.java index e1fa4d984ca..fb00bd7fbf0 100644 --- a/jdk/test/sun/security/pkcs11/tls/TestMasterSecret.java +++ b/jdk/test/sun/security/pkcs11/tls/TestMasterSecret.java @@ -27,6 +27,8 @@ * @summary Known-answer-test for TlsMasterSecret generator * @author Andreas Sterbenz * @library .. + * @modules java.base/sun.security.internal.interfaces + * java.base/sun.security.internal.spec */ import java.io.*; diff --git a/jdk/test/sun/security/pkcs11/tls/TestPRF.java b/jdk/test/sun/security/pkcs11/tls/TestPRF.java index 60b12528277..eefffe70820 100644 --- a/jdk/test/sun/security/pkcs11/tls/TestPRF.java +++ b/jdk/test/sun/security/pkcs11/tls/TestPRF.java @@ -27,6 +27,7 @@ * @summary Basic known-answer-test for TlsPrf * @author Andreas Sterbenz * @library .. + * @modules java.base/sun.security.internal.spec */ import java.io.*; diff --git a/jdk/test/sun/security/pkcs11/tls/TestPremaster.java b/jdk/test/sun/security/pkcs11/tls/TestPremaster.java index 05e8efb0f28..15b13ac8507 100644 --- a/jdk/test/sun/security/pkcs11/tls/TestPremaster.java +++ b/jdk/test/sun/security/pkcs11/tls/TestPremaster.java @@ -27,6 +27,7 @@ * @summary Basic tests for TlsRsaPremasterSecret generator * @author Andreas Sterbenz * @library .. + * @modules java.base/sun.security.internal.spec */ import java.security.Security; diff --git a/jdk/test/sun/security/pkcs12/PKCS12SameKeyId.java b/jdk/test/sun/security/pkcs12/PKCS12SameKeyId.java index fd91fefc54f..bbdac6c3fc3 100644 --- a/jdk/test/sun/security/pkcs12/PKCS12SameKeyId.java +++ b/jdk/test/sun/security/pkcs12/PKCS12SameKeyId.java @@ -25,6 +25,10 @@ * @test * @bug 6958026 * @summary Problem with PKCS12 keystore + * @modules java.base/sun.security.pkcs + * java.base/sun.security.tools.keytool + * java.base/sun.security.util + * java.base/sun.security.x509 * @compile -XDignore.symbol.file PKCS12SameKeyId.java * @run main PKCS12SameKeyId */ diff --git a/jdk/test/sun/security/provider/MessageDigest/DigestKAT.java b/jdk/test/sun/security/provider/MessageDigest/DigestKAT.java index c6746de867b..eba1f59c4d7 100644 --- a/jdk/test/sun/security/provider/MessageDigest/DigestKAT.java +++ b/jdk/test/sun/security/provider/MessageDigest/DigestKAT.java @@ -25,6 +25,7 @@ * @test * @bug 4819771 4834179 5008306 4963723 * @summary Basic known-answer-test for all our MessageDigest algorithms + * @modules java.base/sun.security.provider * @author Andreas Sterbenz */ diff --git a/jdk/test/sun/security/provider/PolicyFile/Comparator.java b/jdk/test/sun/security/provider/PolicyFile/Comparator.java index edda52b9e6b..737c176b133 100644 --- a/jdk/test/sun/security/provider/PolicyFile/Comparator.java +++ b/jdk/test/sun/security/provider/PolicyFile/Comparator.java @@ -24,8 +24,9 @@ /* * @test * @bug 5037004 - * @run main/othervm Comparator * @summary Frivolous ClassCastExceptions thrown by SubjectCodeSource.implies + * @modules java.base/sun.security.provider + * @run main/othervm Comparator * * Note: if you want to see the java.security.debug output, * you can not simply set the system property. diff --git a/jdk/test/sun/security/provider/PolicyFile/TokenStore.java b/jdk/test/sun/security/provider/PolicyFile/TokenStore.java index 7376b76060d..ac2d70b5e18 100644 --- a/jdk/test/sun/security/provider/PolicyFile/TokenStore.java +++ b/jdk/test/sun/security/provider/PolicyFile/TokenStore.java @@ -25,8 +25,7 @@ * @test * @bug 4919147 * @summary Support for token-based KeyStores - * - * TokenStore.keystore password is "TokenStore" + * @modules java.base/sun.security.provider */ import java.io.*; diff --git a/jdk/test/sun/security/provider/PolicyParser/BogusGrants.java b/jdk/test/sun/security/provider/PolicyParser/BogusGrants.java index 69855156435..06df206eddc 100644 --- a/jdk/test/sun/security/provider/PolicyParser/BogusGrants.java +++ b/jdk/test/sun/security/provider/PolicyParser/BogusGrants.java @@ -26,6 +26,7 @@ * @author Gary Ellison * @bug 4233900 * @summary Catch anomalies in Policy parsing + * @modules java.base/sun.security.provider * @run main BogusGrants p001.policy p002.policy p003.policy p004.policy */ diff --git a/jdk/test/sun/security/provider/PolicyParser/EncodeURL.java b/jdk/test/sun/security/provider/PolicyParser/EncodeURL.java index 7e9a845a590..f99eb5418e2 100644 --- a/jdk/test/sun/security/provider/PolicyParser/EncodeURL.java +++ b/jdk/test/sun/security/provider/PolicyParser/EncodeURL.java @@ -24,6 +24,7 @@ /* * @test * @bug 4797850 + * @modules java.base/sun.security.provider * @summary Security policy file does not grok hash mark in pathnames */ diff --git a/jdk/test/sun/security/provider/PolicyParser/TokenStore.java b/jdk/test/sun/security/provider/PolicyParser/TokenStore.java index 38cebefd7dd..9e0d74d99de 100644 --- a/jdk/test/sun/security/provider/PolicyParser/TokenStore.java +++ b/jdk/test/sun/security/provider/PolicyParser/TokenStore.java @@ -25,6 +25,7 @@ * @test * @bug 4919147 * @summary Support for token-based KeyStores + * @modules java.base/sun.security.provider */ import java.io.*; diff --git a/jdk/test/sun/security/provider/X509Factory/BadPem.java b/jdk/test/sun/security/provider/X509Factory/BadPem.java index 9147ab8ce93..45a66aba281 100644 --- a/jdk/test/sun/security/provider/X509Factory/BadPem.java +++ b/jdk/test/sun/security/provider/X509Factory/BadPem.java @@ -25,6 +25,7 @@ * @test * @bug 8074935 * @summary jdk8 keytool doesn't validate pem files for RFC 1421 correctness, as jdk7 did + * @modules java.base/sun.security.provider */ import java.io.ByteArrayOutputStream; diff --git a/jdk/test/sun/security/provider/X509Factory/BigCRL.java b/jdk/test/sun/security/provider/X509Factory/BigCRL.java index 72b6b9d3cfd..963069cdc0e 100644 --- a/jdk/test/sun/security/provider/X509Factory/BigCRL.java +++ b/jdk/test/sun/security/provider/X509Factory/BigCRL.java @@ -25,6 +25,7 @@ * @test * @bug 7099399 * @summary cannot deal with CRL file larger than 16MB + * @modules java.base/sun.security.x509 * @run main/othervm -Xshare:off -Xmx1024m BigCRL */ diff --git a/jdk/test/sun/security/provider/certpath/CertId/CheckCertId.java b/jdk/test/sun/security/provider/certpath/CertId/CheckCertId.java index 96254ac6b3b..ed588b75970 100644 --- a/jdk/test/sun/security/provider/certpath/CertId/CheckCertId.java +++ b/jdk/test/sun/security/provider/certpath/CertId/CheckCertId.java @@ -25,6 +25,8 @@ * @test * @bug 6355295 * @summary Certificate validation using OCSP fails for a particular class of certificates + * @modules java.base/sun.security.provider.certpath + * java.base/sun.security.x509 */ import java.io.*; diff --git a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPBuilder.java b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPBuilder.java index adbd32b75ad..3edf02d70d7 100644 --- a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPBuilder.java +++ b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPBuilder.java @@ -53,7 +53,6 @@ import java.net.SocketException; import java.util.*; import java.security.Security; import java.security.cert.*; -import sun.security.util.DerInputStream; public class CPBuilder { diff --git a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPBuilderWithMD5.java b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPBuilderWithMD5.java index 0483e7e126c..e6a9765037b 100644 --- a/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPBuilderWithMD5.java +++ b/jdk/test/sun/security/provider/certpath/DisabledAlgorithms/CPBuilderWithMD5.java @@ -58,7 +58,6 @@ import java.net.SocketException; import java.util.*; import java.security.Security; import java.security.cert.*; -import sun.security.util.DerInputStream; public class CPBuilderWithMD5 { diff --git a/jdk/test/sun/security/provider/certpath/OCSP/OCSPSingleExtensions.java b/jdk/test/sun/security/provider/certpath/OCSP/OCSPSingleExtensions.java index 3e518375800..f9dde0f3e3a 100644 --- a/jdk/test/sun/security/provider/certpath/OCSP/OCSPSingleExtensions.java +++ b/jdk/test/sun/security/provider/certpath/OCSP/OCSPSingleExtensions.java @@ -25,6 +25,7 @@ * @test * @bug 8074064 * @summary OCSPResponse.SingleResponse objects do not parse singleExtensions + * @modules java.base/sun.security.x509 * @run main/othervm sun.security.provider.certpath.OCSPSingleExtensions */ diff --git a/jdk/test/sun/security/provider/certpath/SunCertPathBuilderExceptionTest.java b/jdk/test/sun/security/provider/certpath/SunCertPathBuilderExceptionTest.java index bd50e7f32ad..74cb516c7f6 100644 --- a/jdk/test/sun/security/provider/certpath/SunCertPathBuilderExceptionTest.java +++ b/jdk/test/sun/security/provider/certpath/SunCertPathBuilderExceptionTest.java @@ -26,6 +26,7 @@ * @bug 5032952 * @summary non-transient non-serializable instance field in serializable class + * @modules java.base/sun.security.provider.certpath */ import sun.security.provider.certpath.SunCertPathBuilderException; diff --git a/jdk/test/sun/security/provider/certpath/X509CertPath/IllegalCertiticates.java b/jdk/test/sun/security/provider/certpath/X509CertPath/IllegalCertiticates.java index a244dd639ac..83bf8c9d8ea 100644 --- a/jdk/test/sun/security/provider/certpath/X509CertPath/IllegalCertiticates.java +++ b/jdk/test/sun/security/provider/certpath/X509CertPath/IllegalCertiticates.java @@ -25,6 +25,7 @@ * @test * @bug 6492692 * @summary Some JCK test failed because of the compiler warnings changes + * @modules java.base/sun.security.provider.certpath */ import java.security.cert.CertificateException; diff --git a/jdk/test/sun/security/ssl/ClientHandshaker/LengthCheckTest.java b/jdk/test/sun/security/ssl/ClientHandshaker/LengthCheckTest.java index aaaaddff950..335c44021d0 100644 --- a/jdk/test/sun/security/ssl/ClientHandshaker/LengthCheckTest.java +++ b/jdk/test/sun/security/ssl/ClientHandshaker/LengthCheckTest.java @@ -26,6 +26,7 @@ * @bug 8044860 * @summary Vectors and fixed length fields should be verified * for allowed sizes. + * @modules java.base/sun.security.ssl * @run main/othervm LengthCheckTest * @key randomness */ diff --git a/jdk/test/sun/security/ssl/InputRecord/ClientHelloRead.java b/jdk/test/sun/security/ssl/InputRecord/ClientHelloRead.java index e7a11bd205e..e08230f325d 100644 --- a/jdk/test/sun/security/ssl/InputRecord/ClientHelloRead.java +++ b/jdk/test/sun/security/ssl/InputRecord/ClientHelloRead.java @@ -25,6 +25,7 @@ * @test * @bug 4432868 * @summary A client-hello message may not always be read correctly + * @modules java.base/sun.net.www * @run main/othervm ClientHelloRead * * SunJSSE does not support dynamic system properties, no way to re-use diff --git a/jdk/test/sun/security/ssl/ServerHandshaker/GetPeerHostClient.java b/jdk/test/sun/security/ssl/ServerHandshaker/GetPeerHostClient.java index 3aedfda743e..bd78e9884fd 100644 --- a/jdk/test/sun/security/ssl/ServerHandshaker/GetPeerHostClient.java +++ b/jdk/test/sun/security/ssl/ServerHandshaker/GetPeerHostClient.java @@ -31,7 +31,6 @@ import java.net.*; import java.io.*; import javax.net.ssl.*; -import com.sun.net.ssl.*; class GetPeerHostClient extends Thread { diff --git a/jdk/test/sun/security/ssl/X509TrustManagerImpl/CheckNullEntity.java b/jdk/test/sun/security/ssl/X509TrustManagerImpl/CheckNullEntity.java index 31f753fe543..ad00042c01f 100644 --- a/jdk/test/sun/security/ssl/X509TrustManagerImpl/CheckNullEntity.java +++ b/jdk/test/sun/security/ssl/X509TrustManagerImpl/CheckNullEntity.java @@ -27,6 +27,7 @@ * @summary unspecified exceptions in X509TrustManager.checkClient[Server]Truste d * @author Xuelei Fan + * @modules java.base/com.sun.net.ssl.internal.ssl */ import java.io.*; diff --git a/jdk/test/sun/security/ssl/X509TrustManagerImpl/ClientServer.java b/jdk/test/sun/security/ssl/X509TrustManagerImpl/ClientServer.java index 372269ef72a..54c6c538437 100644 --- a/jdk/test/sun/security/ssl/X509TrustManagerImpl/ClientServer.java +++ b/jdk/test/sun/security/ssl/X509TrustManagerImpl/ClientServer.java @@ -26,6 +26,7 @@ * @bug 4717766 * @author Brad Wetmore * @summary 1.0.3 JsseX509TrustManager erroneously calls isClientTrusted() + * @modules java.base/com.sun.net.ssl * @run main/manual ClientServer */ diff --git a/jdk/test/sun/security/tools/jarsigner/CertChainUnclosed.java b/jdk/test/sun/security/tools/jarsigner/CertChainUnclosed.java index e259207db9c..7ec4d88d73a 100644 --- a/jdk/test/sun/security/tools/jarsigner/CertChainUnclosed.java +++ b/jdk/test/sun/security/tools/jarsigner/CertChainUnclosed.java @@ -25,6 +25,8 @@ * @test * @bug 8027991 * @summary InputStream should be closed in sun.security.tools.jarsigner.Main + * @modules java.base/sun.security.tools.keytool + * jdk.jartool/sun.security.tools.jarsigner * @run main/othervm CertChainUnclosed */ diff --git a/jdk/test/sun/security/tools/jarsigner/DefaultSigalg.java b/jdk/test/sun/security/tools/jarsigner/DefaultSigalg.java index 0fab25eeb84..1d8919934d5 100644 --- a/jdk/test/sun/security/tools/jarsigner/DefaultSigalg.java +++ b/jdk/test/sun/security/tools/jarsigner/DefaultSigalg.java @@ -25,6 +25,12 @@ * @test * @bug 8057810 * @summary New defaults for DSA keys in jarsigner and keytool + * @modules java.base/sun.security.pkcs + * java.base/sun.security.tools.keytool + * java.base/sun.security.util + * java.base/sun.security.x509 + * jdk.jartool/sun.security.tools.jarsigner + * jdk.jartool/sun.tools.jar */ import sun.security.pkcs.PKCS7; diff --git a/jdk/test/sun/security/tools/jarsigner/EntriesOrder.java b/jdk/test/sun/security/tools/jarsigner/EntriesOrder.java index 908f6ef48be..1b804bb9505 100644 --- a/jdk/test/sun/security/tools/jarsigner/EntriesOrder.java +++ b/jdk/test/sun/security/tools/jarsigner/EntriesOrder.java @@ -26,6 +26,9 @@ * @bug 8031572 * @summary jarsigner -verify exits with 0 when a jar file is not properly signed * @library /lib/testlibrary + * @modules java.base/sun.security.tools.keytool + * jdk.jartool/sun.security.tools.jarsigner + * jdk.jartool/sun.tools.jar * @build jdk.testlibrary.IOUtils * @run main EntriesOrder */ diff --git a/jdk/test/sun/security/tools/jarsigner/JarSigningNonAscii.java b/jdk/test/sun/security/tools/jarsigner/JarSigningNonAscii.java index 69bf09ed5bf..ee54b45fe67 100644 --- a/jdk/test/sun/security/tools/jarsigner/JarSigningNonAscii.java +++ b/jdk/test/sun/security/tools/jarsigner/JarSigningNonAscii.java @@ -25,6 +25,7 @@ * @test * @bug 4924188 * @summary sign a JAR file that has entry names with non-ASCII characters. + * @modules jdk.jartool/sun.security.tools.jarsigner */ import sun.security.tools.*; diff --git a/jdk/test/sun/security/tools/jarsigner/LargeJarEntry.java b/jdk/test/sun/security/tools/jarsigner/LargeJarEntry.java index 4d4db3c68a0..c10835066ff 100644 --- a/jdk/test/sun/security/tools/jarsigner/LargeJarEntry.java +++ b/jdk/test/sun/security/tools/jarsigner/LargeJarEntry.java @@ -26,6 +26,7 @@ * @bug 6405538 6474350 * @summary Make sure jar files with large entries (more than max heap size) * can be signed + * @modules jdk.jartool/sun.security.tools.jarsigner * @run main/othervm -Xmx8M LargeJarEntry * @author Sean Mullan */ diff --git a/jdk/test/sun/security/tools/jarsigner/TsacertOptionTest.java b/jdk/test/sun/security/tools/jarsigner/TsacertOptionTest.java index 3664ca922f9..67368ae2f74 100644 --- a/jdk/test/sun/security/tools/jarsigner/TsacertOptionTest.java +++ b/jdk/test/sun/security/tools/jarsigner/TsacertOptionTest.java @@ -30,6 +30,12 @@ import jdk.testlibrary.JarUtils; * @bug 8024302 8026037 * @summary The test signs and verifies a jar file with -tsacert option * @library /lib/testlibrary + * @modules java.base/sun.misc + * java.base/sun.security.pkcs + * java.base/sun.security.timestamp + * java.base/sun.security.util + * java.base/sun.security.x509 + * java.management * @run main TsacertOptionTest */ public class TsacertOptionTest { diff --git a/jdk/test/sun/security/tools/keytool/CloseFile.java b/jdk/test/sun/security/tools/keytool/CloseFile.java index f8040018306..590cce6cb4e 100644 --- a/jdk/test/sun/security/tools/keytool/CloseFile.java +++ b/jdk/test/sun/security/tools/keytool/CloseFile.java @@ -26,6 +26,7 @@ * @bug 6489721 * @summary keytool has not closed several file streams * @author weijun.wang + * @modules java.base/sun.security.tools.keytool * @compile -XDignore.symbol.file CloseFile.java * @run main CloseFile * diff --git a/jdk/test/sun/security/tools/keytool/NewSize7.java b/jdk/test/sun/security/tools/keytool/NewSize7.java index b99581cc860..5a7dcfa57d9 100644 --- a/jdk/test/sun/security/tools/keytool/NewSize7.java +++ b/jdk/test/sun/security/tools/keytool/NewSize7.java @@ -25,6 +25,7 @@ * @test * @bug 6561126 * @summary keytool should use larger default keysize for keypairs + * @modules java.base/sun.security.tools.keytool * @compile -XDignore.symbol.file NewSize7.java * @run main NewSize7 */ diff --git a/jdk/test/sun/security/tools/keytool/StartDateTest.java b/jdk/test/sun/security/tools/keytool/StartDateTest.java index 9a198025fb6..a1180eac4f2 100644 --- a/jdk/test/sun/security/tools/keytool/StartDateTest.java +++ b/jdk/test/sun/security/tools/keytool/StartDateTest.java @@ -25,6 +25,7 @@ * @test * @bug 6468285 * @summary keytool ability to backdate self-signed certificates to compensate for clock skew + * @modules java.base/sun.security.tools.keytool * @compile -XDignore.symbol.file StartDateTest.java * @run main StartDateTest */ diff --git a/jdk/test/sun/security/tools/keytool/UnknownAndUnparseable.java b/jdk/test/sun/security/tools/keytool/UnknownAndUnparseable.java index 6c5d7283f1c..2356b006a6e 100644 --- a/jdk/test/sun/security/tools/keytool/UnknownAndUnparseable.java +++ b/jdk/test/sun/security/tools/keytool/UnknownAndUnparseable.java @@ -25,6 +25,9 @@ * @test * @bug 7192202 * @summary Make sure keytool prints both unknown and unparseable extensions + * @modules java.base/sun.security.tools.keytool + * java.base/sun.security.util + * java.base/sun.security.x509 * @compile -XDignore.symbol.file UnknownAndUnparseable.java * @run main UnknownAndUnparseable */ diff --git a/jdk/test/sun/security/util/BitArray/NamedBitList.java b/jdk/test/sun/security/util/BitArray/NamedBitList.java index ccae5504fbe..9d10b7fc4db 100644 --- a/jdk/test/sun/security/util/BitArray/NamedBitList.java +++ b/jdk/test/sun/security/util/BitArray/NamedBitList.java @@ -26,6 +26,8 @@ * @author Weijun Wang * @bug 4654195 * @summary BIT STRING types with named bits must remove trailing 0 bits + * @modules java.base/sun.security.util + * java.base/sun.security.x509 */ import sun.security.util.BitArray; diff --git a/jdk/test/sun/security/util/Debug/MultiOptions.java b/jdk/test/sun/security/util/Debug/MultiOptions.java index b6254bbc0f6..82987f4348a 100644 --- a/jdk/test/sun/security/util/Debug/MultiOptions.java +++ b/jdk/test/sun/security/util/Debug/MultiOptions.java @@ -27,6 +27,7 @@ * @bug 6466247 * @summary java.security.debug permission= and codebase= * options do not work + * @modules java.base/sun.security.util * @run main/othervm -Djava.security.debug="stacknothing--=-30logincontextacCess:stack-domain,combiner;access:fAilure-jarpermission=sun.dummy.DummyPermission;peRmiSsion=sun.Dummy.DummyPermission2=permission=sun.dummy.DummyPermission3:codEbAse=/dir1/DIR2/Dir3/File.java,codebase=http://www.sun.com/search?q=SunMicro,codEbAse=/dir1/DIR2/Dir3/File.java;coDebase=www.sun.com;codebase=file:///C:/temp/foo%20more/a.txt" MultiOptions */ import sun.security.util.Debug; diff --git a/jdk/test/sun/security/util/DerInputBuffer/BigInteger0.java b/jdk/test/sun/security/util/DerInputBuffer/BigInteger0.java index 351f0bc72e4..6891e7b887e 100644 --- a/jdk/test/sun/security/util/DerInputBuffer/BigInteger0.java +++ b/jdk/test/sun/security/util/DerInputBuffer/BigInteger0.java @@ -25,6 +25,7 @@ * @test * @bug 4492053 * @summary Verify invalid zero length Integer value is rejected + * @modules java.base/sun.security.util */ import java.io.*; diff --git a/jdk/test/sun/security/util/DerInputBuffer/DerInputBufferEqualsHashCode.java b/jdk/test/sun/security/util/DerInputBuffer/DerInputBufferEqualsHashCode.java index 711b9f153df..77cea3ffe3f 100644 --- a/jdk/test/sun/security/util/DerInputBuffer/DerInputBufferEqualsHashCode.java +++ b/jdk/test/sun/security/util/DerInputBuffer/DerInputBufferEqualsHashCode.java @@ -26,6 +26,8 @@ * @author Gary Ellison * @bug 4170635 * @summary Verify equals()/hashCode() contract honored + * @modules java.base/sun.security.util + * java.base/sun.security.x509 * @run main/othervm/policy=Allow.policy DerInputBufferEqualsHashCode */ diff --git a/jdk/test/sun/security/util/DerInputBuffer/PaddedBitString.java b/jdk/test/sun/security/util/DerInputBuffer/PaddedBitString.java index 62080625eb6..2e31159c25e 100644 --- a/jdk/test/sun/security/util/DerInputBuffer/PaddedBitString.java +++ b/jdk/test/sun/security/util/DerInputBuffer/PaddedBitString.java @@ -25,6 +25,7 @@ * @test * @bug 4511556 * @summary Verify BitString value containing padding bits is accepted. + * @modules java.base/sun.security.util */ import java.io.*; diff --git a/jdk/test/sun/security/util/DerInputBuffer/TimeParsing.java b/jdk/test/sun/security/util/DerInputBuffer/TimeParsing.java index a81b4b275fc..f49701a438c 100644 --- a/jdk/test/sun/security/util/DerInputBuffer/TimeParsing.java +++ b/jdk/test/sun/security/util/DerInputBuffer/TimeParsing.java @@ -25,6 +25,7 @@ * @test * @bug 4558835 4915146 * @summary Verify timezone offset and fractional seconds are correctly parsed + * @modules java.base/sun.security.util */ import java.io.*; diff --git a/jdk/test/sun/security/util/DerOutputStream/LocaleInTime.java b/jdk/test/sun/security/util/DerOutputStream/LocaleInTime.java index dd942680d2e..b6e66ceaef5 100644 --- a/jdk/test/sun/security/util/DerOutputStream/LocaleInTime.java +++ b/jdk/test/sun/security/util/DerOutputStream/LocaleInTime.java @@ -25,6 +25,7 @@ * @test * @bug 6670889 * @summary Keystore created under Hindi Locale causing ArrayIndexOutOfBoundsException + * @modules java.base/sun.security.util * @run main/othervm -Duser.language=hi -Duser.region=IN LocaleInTime */ diff --git a/jdk/test/sun/security/util/DerValue/BadValue.java b/jdk/test/sun/security/util/DerValue/BadValue.java index ef3a9ef3817..374a52d7f7b 100644 --- a/jdk/test/sun/security/util/DerValue/BadValue.java +++ b/jdk/test/sun/security/util/DerValue/BadValue.java @@ -25,6 +25,8 @@ * @test * @bug 6864911 * @summary ASN.1/DER input stream parser needs more work + * @modules java.base/sun.misc + * java.base/sun.security.util */ import java.io.*; diff --git a/jdk/test/sun/security/util/DerValue/DerValueEqualsHashCode.java b/jdk/test/sun/security/util/DerValue/DerValueEqualsHashCode.java index 46dd51ca1c1..78e8e7eb11c 100644 --- a/jdk/test/sun/security/util/DerValue/DerValueEqualsHashCode.java +++ b/jdk/test/sun/security/util/DerValue/DerValueEqualsHashCode.java @@ -26,6 +26,8 @@ * @author Gary Ellison * @bug 4170635 * @summary Verify equals()/hashCode() contract honored + * @modules java.base/sun.security.util + * java.base/sun.security.x509 */ import java.io.*; diff --git a/jdk/test/sun/security/util/DerValue/EmptyValue.java b/jdk/test/sun/security/util/DerValue/EmptyValue.java index 8a37e0a2c89..94380485463 100644 --- a/jdk/test/sun/security/util/DerValue/EmptyValue.java +++ b/jdk/test/sun/security/util/DerValue/EmptyValue.java @@ -25,6 +25,7 @@ * @test * @bug 6804045 * @summary DerValue does not accept empty OCTET STRING + * @modules java.base/sun.security.util */ import sun.security.util.DerValue; diff --git a/jdk/test/sun/security/util/DerValue/Indefinite.java b/jdk/test/sun/security/util/DerValue/Indefinite.java index 64c1bf8daf4..c5064315a4f 100644 --- a/jdk/test/sun/security/util/DerValue/Indefinite.java +++ b/jdk/test/sun/security/util/DerValue/Indefinite.java @@ -25,6 +25,7 @@ * @test * @bug 6731685 * @summary CertificateFactory.generateCertificates throws IOException on PKCS7 cert chain + * @modules java.base/sun.security.util */ import java.io.*; diff --git a/jdk/test/sun/security/util/DerValue/NegInt.java b/jdk/test/sun/security/util/DerValue/NegInt.java index 3b2f10e4780..4c82d71862b 100644 --- a/jdk/test/sun/security/util/DerValue/NegInt.java +++ b/jdk/test/sun/security/util/DerValue/NegInt.java @@ -25,6 +25,7 @@ * @test * @bug 6855671 * @summary DerOutputStream encodes negative integer incorrectly + * @modules java.base/sun.security.util */ import sun.security.util.DerOutputStream; diff --git a/jdk/test/sun/security/util/HostnameMatcher/TestHostnameChecker.java b/jdk/test/sun/security/util/HostnameMatcher/TestHostnameChecker.java index d5ef752f000..688b1363731 100644 --- a/jdk/test/sun/security/util/HostnameMatcher/TestHostnameChecker.java +++ b/jdk/test/sun/security/util/HostnameMatcher/TestHostnameChecker.java @@ -25,6 +25,7 @@ * @test * @bug 4514108 * @summary Verify host name matching behaves as defined in RFC2818. + * @modules java.base/sun.security.util */ import java.io.*; diff --git a/jdk/test/sun/security/util/Oid/OidFormat.java b/jdk/test/sun/security/util/Oid/OidFormat.java index 4ec9140052f..d7aab146c82 100644 --- a/jdk/test/sun/security/util/Oid/OidFormat.java +++ b/jdk/test/sun/security/util/Oid/OidFormat.java @@ -28,6 +28,8 @@ * @bug 6418425 * @bug 6418433 * @summary ObjectIdentifier should reject 1.2.3.-4 and throw IOException on all format errors + * @modules java.base/sun.security.util + * java.security.jgss */ import java.io.IOException; diff --git a/jdk/test/sun/security/util/Oid/S11N.java b/jdk/test/sun/security/util/Oid/S11N.java index a5595d10112..b3c02b5af3c 100644 --- a/jdk/test/sun/security/util/Oid/S11N.java +++ b/jdk/test/sun/security/util/Oid/S11N.java @@ -24,6 +24,8 @@ /* * @test * @bug 4811968 6908628 8006564 + * @modules java.base/sun.misc + * java.base/sun.security.util * @run main S11N check * @summary Serialization compatibility with old versions (and fixes) */ diff --git a/jdk/test/sun/security/util/PropertyExpander/ExpandAndEncode.java b/jdk/test/sun/security/util/PropertyExpander/ExpandAndEncode.java index 27b8f421a13..8ece4d03f9d 100644 --- a/jdk/test/sun/security/util/PropertyExpander/ExpandAndEncode.java +++ b/jdk/test/sun/security/util/PropertyExpander/ExpandAndEncode.java @@ -26,6 +26,7 @@ * @author Valerie Peng * @bug 4716213 * @bug 4797850 + * @modules java.base/sun.security.util * @summary Verify that expand(String, boolean) does not encode if * the value is a valid URI with a scheme (it is already encoded), * i.e. avoid double encoding. diff --git a/jdk/test/sun/security/util/Resources/NewNamesFormat.java b/jdk/test/sun/security/util/Resources/NewNamesFormat.java index d984cfa0321..c806c87d637 100644 --- a/jdk/test/sun/security/util/Resources/NewNamesFormat.java +++ b/jdk/test/sun/security/util/Resources/NewNamesFormat.java @@ -24,6 +24,10 @@ /* * @test * @bug 6987827 + * @modules java.base/sun.security.util + * java.base/sun.security.tools.keytool + * jdk.jartool/sun.security.tools.jarsigner + * jdk.policytool/sun.security.tools.policytool * @summary security/util/Resources.java needs improvement */ diff --git a/jdk/test/sun/security/util/asn1StringTypes/StringTypes.java b/jdk/test/sun/security/util/asn1StringTypes/StringTypes.java index 11ce080edbd..be067a89fdb 100644 --- a/jdk/test/sun/security/util/asn1StringTypes/StringTypes.java +++ b/jdk/test/sun/security/util/asn1StringTypes/StringTypes.java @@ -26,6 +26,7 @@ * @bug 4178326 * @summary Make sure reading/writing of different DER encoded string * types works correctly. + * @modules java.base/sun.security.util */ import java.io.*; diff --git a/jdk/test/sun/security/validator/ConstructorTest.java b/jdk/test/sun/security/validator/ConstructorTest.java index e076b618e9e..e7af2621f1b 100644 --- a/jdk/test/sun/security/validator/ConstructorTest.java +++ b/jdk/test/sun/security/validator/ConstructorTest.java @@ -25,6 +25,7 @@ * @test * @bug 6996377 * @summary shrink duplicate code in the constructor of PKIXValidator + * @modules java.base/sun.security.validator */ import java.io.ByteArrayInputStream; diff --git a/jdk/test/sun/security/validator/EndEntityExtensionCheck.java b/jdk/test/sun/security/validator/EndEntityExtensionCheck.java index 122bae237f2..fee67ed55d4 100644 --- a/jdk/test/sun/security/validator/EndEntityExtensionCheck.java +++ b/jdk/test/sun/security/validator/EndEntityExtensionCheck.java @@ -26,6 +26,7 @@ * @bug 8076117 * @summary EndEntityChecker should not process custom extensions * after PKIX validation + * @modules java.base/sun.security.validator */ import java.io.ByteArrayInputStream; diff --git a/jdk/test/sun/security/x509/AVA/AVAEqualsHashCode.java b/jdk/test/sun/security/x509/AVA/AVAEqualsHashCode.java index 640764a5bc2..161cd790403 100644 --- a/jdk/test/sun/security/x509/AVA/AVAEqualsHashCode.java +++ b/jdk/test/sun/security/x509/AVA/AVAEqualsHashCode.java @@ -26,6 +26,8 @@ * @author Gary Ellison * @bug 4170635 * @summary Verify equals()/hashCode() contract honored + * @modules java.base/sun.security.util + * java.base/sun.security.x509 * @run main/othervm/policy=Allow.policy AVAEqualsHashCode */ diff --git a/jdk/test/sun/security/x509/AVA/BadName.java b/jdk/test/sun/security/x509/AVA/BadName.java index 9fc01dc2553..a16f4cdfe5c 100644 --- a/jdk/test/sun/security/x509/AVA/BadName.java +++ b/jdk/test/sun/security/x509/AVA/BadName.java @@ -26,6 +26,7 @@ * @bug 4184274 * @summary Make sure bad distinguished names (without keywords) don't * cause out-of-memory condition + * @modules java.base/sun.security.x509 */ import java.io.IOException; import sun.security.x509.X500Name; diff --git a/jdk/test/sun/security/x509/AVA/DomainComponentEncoding.java b/jdk/test/sun/security/x509/AVA/DomainComponentEncoding.java index d9c61aeca6e..2de36567229 100644 --- a/jdk/test/sun/security/x509/AVA/DomainComponentEncoding.java +++ b/jdk/test/sun/security/x509/AVA/DomainComponentEncoding.java @@ -25,6 +25,8 @@ * @test * @bug 6391482 * @summary incorrect ASN1 DER encoding of DomainComponent AttributeValue + * @modules java.base/sun.security.util + * java.base/sun.security.x509 */ import javax.security.auth.x500.X500Principal; diff --git a/jdk/test/sun/security/x509/AVA/EmailAddressEncoding.java b/jdk/test/sun/security/x509/AVA/EmailAddressEncoding.java index 39499d46159..33d1d9de794 100644 --- a/jdk/test/sun/security/x509/AVA/EmailAddressEncoding.java +++ b/jdk/test/sun/security/x509/AVA/EmailAddressEncoding.java @@ -25,6 +25,8 @@ * @test * @bug 4702543 * @summary incorrect ASN1 DER encoding of EmailAddress Attribute + * @modules java.base/sun.security.pkcs + * java.base/sun.security.util */ import java.io.*; diff --git a/jdk/test/sun/security/x509/AlgorithmId/AlgorithmIdEqualsHashCode.java b/jdk/test/sun/security/x509/AlgorithmId/AlgorithmIdEqualsHashCode.java index 00ac82f962f..f9387f626c7 100644 --- a/jdk/test/sun/security/x509/AlgorithmId/AlgorithmIdEqualsHashCode.java +++ b/jdk/test/sun/security/x509/AlgorithmId/AlgorithmIdEqualsHashCode.java @@ -26,6 +26,7 @@ * @author Gary Ellison * @bug 4170635 * @summary Verify equals()/hashCode() contract honored + * @modules java.base/sun.security.x509 */ import java.io.*; diff --git a/jdk/test/sun/security/x509/AlgorithmId/ExtensibleAlgorithmId.java b/jdk/test/sun/security/x509/AlgorithmId/ExtensibleAlgorithmId.java index 2f85217f483..d6cbbab7553 100644 --- a/jdk/test/sun/security/x509/AlgorithmId/ExtensibleAlgorithmId.java +++ b/jdk/test/sun/security/x509/AlgorithmId/ExtensibleAlgorithmId.java @@ -24,6 +24,7 @@ /* * @test * @bug 4162868 + * @modules java.base/sun.security.x509 * @run main/othervm ExtensibleAlgorithmId * @summary Algorithm Name-to-OID mapping needs to be made extensible. */ diff --git a/jdk/test/sun/security/x509/AlgorithmId/NonStandardNames.java b/jdk/test/sun/security/x509/AlgorithmId/NonStandardNames.java index c6ca55ce385..7823b1eddfa 100644 --- a/jdk/test/sun/security/x509/AlgorithmId/NonStandardNames.java +++ b/jdk/test/sun/security/x509/AlgorithmId/NonStandardNames.java @@ -25,6 +25,10 @@ * @test * @bug 7180907 * @summary Jarsigner -verify fails if rsa file used sha-256 with authenticated attributes + * @modules java.base/sun.security.pkcs + * java.base/sun.security.tools.keytool + * java.base/sun.security.util + * java.base/sun.security.x509 * @compile -XDignore.symbol.file NonStandardNames.java * @run main NonStandardNames */ diff --git a/jdk/test/sun/security/x509/AlgorithmId/SHA256withECDSA.java b/jdk/test/sun/security/x509/AlgorithmId/SHA256withECDSA.java index 28a84d6b315..50835a35a71 100644 --- a/jdk/test/sun/security/x509/AlgorithmId/SHA256withECDSA.java +++ b/jdk/test/sun/security/x509/AlgorithmId/SHA256withECDSA.java @@ -25,6 +25,7 @@ * @test * @bug 6871847 * @summary AlgorithmId.get("SHA256withECDSA") not available + * @modules java.base/sun.security.x509 */ import sun.security.x509.*; diff --git a/jdk/test/sun/security/x509/AlgorithmId/TurkishRegion.java b/jdk/test/sun/security/x509/AlgorithmId/TurkishRegion.java index 5ca91e02677..2fa9e213852 100644 --- a/jdk/test/sun/security/x509/AlgorithmId/TurkishRegion.java +++ b/jdk/test/sun/security/x509/AlgorithmId/TurkishRegion.java @@ -26,6 +26,7 @@ * @bug 6867345 * @summary Turkish regional options cause NPE in * sun.security.x509.AlgorithmId.algOID + * @modules java.base/sun.security.x509 * @run main/othervm -Duser.language=tr -Duser.region=TR TurkishRegion * @author Xuelei Fan */ diff --git a/jdk/test/sun/security/x509/Extensions/BCNull.java b/jdk/test/sun/security/x509/Extensions/BCNull.java index 43bc1a15229..da9a5e8fe69 100644 --- a/jdk/test/sun/security/x509/Extensions/BCNull.java +++ b/jdk/test/sun/security/x509/Extensions/BCNull.java @@ -25,6 +25,7 @@ * @test * @summary BasicConstraintsExtension does not encode when (ca==false && pathLen<0) * @bug 6803376 + * @modules java.base/sun.security.x509 */ import sun.security.x509.BasicConstraintsExtension; diff --git a/jdk/test/sun/security/x509/Extensions/DefaultCriticality.java b/jdk/test/sun/security/x509/Extensions/DefaultCriticality.java index 102109a6021..7c7f6d462cb 100644 --- a/jdk/test/sun/security/x509/Extensions/DefaultCriticality.java +++ b/jdk/test/sun/security/x509/Extensions/DefaultCriticality.java @@ -26,6 +26,7 @@ * @summary Change default criticality of policy mappings and policy constraints certificate extensions * @bug 8059916 + * @modules java.base/sun.security.x509 */ import sun.security.x509.PolicyConstraintsExtension; diff --git a/jdk/test/sun/security/x509/GeneralName/Encode.java b/jdk/test/sun/security/x509/GeneralName/Encode.java index 2080245dcaa..ebff4e14ac6 100644 --- a/jdk/test/sun/security/x509/GeneralName/Encode.java +++ b/jdk/test/sun/security/x509/GeneralName/Encode.java @@ -30,6 +30,8 @@ import sun.security.util.*; * @bug 4716972 * @summary Check that GeneralName.encode() encodes an X500Name with * an explicit tag + * @modules java.base/sun.security.util + * java.base/sun.security.x509 */ public class Encode { diff --git a/jdk/test/sun/security/x509/URIName/Parse.java b/jdk/test/sun/security/x509/URIName/Parse.java index c53450840a6..8edf2ea63b7 100644 --- a/jdk/test/sun/security/x509/URIName/Parse.java +++ b/jdk/test/sun/security/x509/URIName/Parse.java @@ -26,6 +26,8 @@ * @bug 8005389 * @summary CRL Distribution Point URIs with spaces or backslashes should * not be parseable + * @modules java.base/sun.security.util + * java.base/sun.security.x509 */ import java.io.ByteArrayInputStream; import java.io.IOException; diff --git a/jdk/test/sun/security/x509/X500Name/AllAttribs.java b/jdk/test/sun/security/x509/X500Name/AllAttribs.java index a70a3170f26..11f9cdd7ffc 100644 --- a/jdk/test/sun/security/x509/X500Name/AllAttribs.java +++ b/jdk/test/sun/security/x509/X500Name/AllAttribs.java @@ -24,6 +24,7 @@ /* @test * @bug 4244051 * @summary Make sure all PKIX-required X.520 name attribs are supported + * @modules java.base/sun.security.x509 */ import sun.security.x509.*; diff --git a/jdk/test/sun/security/x509/X500Name/DerValueConstructor.java b/jdk/test/sun/security/x509/X500Name/DerValueConstructor.java index 620cf992927..0a9f8351944 100644 --- a/jdk/test/sun/security/x509/X500Name/DerValueConstructor.java +++ b/jdk/test/sun/security/x509/X500Name/DerValueConstructor.java @@ -24,6 +24,8 @@ /* @test * @bug 4228833 * @summary Make sure constructor that takes DerValue argument works + * @modules java.base/sun.security.util + * java.base/sun.security.x509 */ import sun.security.util.*; diff --git a/jdk/test/sun/security/x509/X500Name/EmailKeyword.java b/jdk/test/sun/security/x509/X500Name/EmailKeyword.java index b0ccf3757ed..795cb3ced78 100644 --- a/jdk/test/sun/security/x509/X500Name/EmailKeyword.java +++ b/jdk/test/sun/security/x509/X500Name/EmailKeyword.java @@ -25,6 +25,7 @@ * @bug 4531319 * @summary Make sure AVA with EMAIL or EMAILADDRESS keyword is recognized * in DEFAULT format + * @modules java.base/sun.security.x509 */ import sun.security.x509.X500Name; diff --git a/jdk/test/sun/security/x509/X500Name/NullX500Name.java b/jdk/test/sun/security/x509/X500Name/NullX500Name.java index aedf5341fcf..0e1d471853e 100644 --- a/jdk/test/sun/security/x509/X500Name/NullX500Name.java +++ b/jdk/test/sun/security/x509/X500Name/NullX500Name.java @@ -24,6 +24,9 @@ /* @test * @bug 4118818 * @summary allow null X.500 Names + * @modules java.base/sun.misc + * java.base/sun.security.util + * java.base/sun.security.x509 */ import java.util.Arrays; diff --git a/jdk/test/sun/security/x509/X500Name/RDNwithMultipleAVAs.java b/jdk/test/sun/security/x509/X500Name/RDNwithMultipleAVAs.java index 88293289c54..3f12cdfbbf5 100644 --- a/jdk/test/sun/security/x509/X500Name/RDNwithMultipleAVAs.java +++ b/jdk/test/sun/security/x509/X500Name/RDNwithMultipleAVAs.java @@ -24,6 +24,7 @@ /* @test * @bug 4197911 * @summary Make sure RDN with multiple AVAs can be parsed. + * @modules java.base/sun.security.x509 */ import java.io.*; diff --git a/jdk/test/sun/security/x509/X509CRLImpl/OrderAndDup.java b/jdk/test/sun/security/x509/X509CRLImpl/OrderAndDup.java index 51610e61c7f..bbc38750bec 100644 --- a/jdk/test/sun/security/x509/X509CRLImpl/OrderAndDup.java +++ b/jdk/test/sun/security/x509/X509CRLImpl/OrderAndDup.java @@ -25,6 +25,8 @@ * @test * @bug 7143872 * @summary Improve certificate extension processing + * @modules java.base/sun.security.util + * java.base/sun.security.x509 */ import java.io.ByteArrayInputStream; import java.math.BigInteger; diff --git a/jdk/test/sun/security/x509/equalNames/AltNamesEqualsTest.java b/jdk/test/sun/security/x509/equalNames/AltNamesEqualsTest.java index 75a3da1d026..8ffe02e1cec 100644 --- a/jdk/test/sun/security/x509/equalNames/AltNamesEqualsTest.java +++ b/jdk/test/sun/security/x509/equalNames/AltNamesEqualsTest.java @@ -26,6 +26,8 @@ * @summary Make sure names that are equal are treated as such. * @bug 4273559 * @author Yassir Elley + * @modules java.base/sun.security.util + * java.base/sun.security.x509 */ import sun.security.x509.*; diff --git a/jdk/test/sun/tools/java/CFCTest.java b/jdk/test/sun/tools/java/CFCTest.java index eebf37bb83c..4dea1a57bc8 100644 --- a/jdk/test/sun/tools/java/CFCTest.java +++ b/jdk/test/sun/tools/java/CFCTest.java @@ -24,7 +24,9 @@ /* * @test * @bug 8011805 - * @summary Update sun.tools.java class file reading/writing support to include the new constant pool entries (including invokedynamic) + * @modules jdk.rmic/sun.tools.java jdk.rmic/sun.rmi.rmic + * @summary Update sun.tools.java class file reading/writing support to include + * the new constant pool entries (including invokedynamic) */ import java.io.DataInputStream; diff --git a/jdk/test/sun/util/calendar/zi/TestZoneInfo310.java b/jdk/test/sun/util/calendar/zi/TestZoneInfo310.java index 8bf07f6208b..7283ce3d7b6 100644 --- a/jdk/test/sun/util/calendar/zi/TestZoneInfo310.java +++ b/jdk/test/sun/util/calendar/zi/TestZoneInfo310.java @@ -26,6 +26,7 @@ *@bug 8007572 8008161 *@summary Test whether the TimeZone generated from JSR310 tzdb is the same *as the one from the tz data from javazic + * @modules java.base/sun.util.calendar */ import java.io.File; diff --git a/jdk/test/sun/util/locale/provider/Bug8038436.java b/jdk/test/sun/util/locale/provider/Bug8038436.java index d224190c995..59931d4969c 100644 --- a/jdk/test/sun/util/locale/provider/Bug8038436.java +++ b/jdk/test/sun/util/locale/provider/Bug8038436.java @@ -25,6 +25,8 @@ * @test * @bug 8038436 * @summary Test for changes in 8038436 + * @modules java.base/sun.util.locale.provider + * java.base/sun.util.spi * @compile -XDignore.symbol.file Bug8038436.java * @run main/othervm Bug8038436 -Djava.ext.dirs=foo security * @run main/othervm Bug8038436 -Djava.locale.providers=JRE availlocs diff --git a/jdk/test/sun/util/logging/PlatformLoggerTest.java b/jdk/test/sun/util/logging/PlatformLoggerTest.java index 3fdab49addd..968f35c6d64 100644 --- a/jdk/test/sun/util/logging/PlatformLoggerTest.java +++ b/jdk/test/sun/util/logging/PlatformLoggerTest.java @@ -29,6 +29,7 @@ * operations. othervm mode to make sure java.util.logging * is not initialized. * + * @modules java.base/sun.util.logging * @compile -XDignore.symbol.file PlatformLoggerTest.java * @run main/othervm PlatformLoggerTest */ diff --git a/jdk/test/sun/util/logging/SourceClassName.java b/jdk/test/sun/util/logging/SourceClassName.java index 886460b7dad..0de431a1a20 100644 --- a/jdk/test/sun/util/logging/SourceClassName.java +++ b/jdk/test/sun/util/logging/SourceClassName.java @@ -27,6 +27,7 @@ * @summary Test the source class name and method output by the platform * logger. * + * @modules java.base/sun.util.logging * @compile -XDignore.symbol.file SourceClassName.java * @run main/othervm SourceClassName */ diff --git a/jdk/test/tools/jar/ChangeDir.java b/jdk/test/tools/jar/ChangeDir.java index 0a4f86fcc3d..7d3516bcba7 100644 --- a/jdk/test/tools/jar/ChangeDir.java +++ b/jdk/test/tools/jar/ChangeDir.java @@ -24,6 +24,7 @@ /** * @test * @bug 4806786 8023113 + * @modules jdk.jartool/sun.tools.jar * @summary jar -C doesn't ignore multiple // in path */ diff --git a/jdk/test/tools/jar/JarBackSlash.java b/jdk/test/tools/jar/JarBackSlash.java index 5975e4e5467..565606b8f3f 100644 --- a/jdk/test/tools/jar/JarBackSlash.java +++ b/jdk/test/tools/jar/JarBackSlash.java @@ -28,6 +28,7 @@ /* * @test * @bug 7201156 + * @modules jdk.jartool/sun.tools.jar * @summary jar tool fails to convert file separation characters for list and extract * @author Sean Chou */ diff --git a/jdk/test/tools/jar/JarEntryTime.java b/jdk/test/tools/jar/JarEntryTime.java index 4f29b8e7a63..701779c2828 100644 --- a/jdk/test/tools/jar/JarEntryTime.java +++ b/jdk/test/tools/jar/JarEntryTime.java @@ -24,6 +24,7 @@ /** * @test * @bug 4225317 6969651 + * @modules jdk.jartool/sun.tools.jar * @summary Check extracted files have date as per those in the .jar file */ diff --git a/jdk/test/tools/jar/UpdateJar.java b/jdk/test/tools/jar/UpdateJar.java index a2bc37c4fee..524189bb841 100644 --- a/jdk/test/tools/jar/UpdateJar.java +++ b/jdk/test/tools/jar/UpdateJar.java @@ -24,6 +24,7 @@ /** * @test * @bug 7175845 + * @modules jdk.jartool/sun.tools.jar * @summary jar -uf should not change file permission */ diff --git a/jdk/test/tools/jar/UpdateManifest.java b/jdk/test/tools/jar/UpdateManifest.java index 7a69d96ae53..d07674cab17 100644 --- a/jdk/test/tools/jar/UpdateManifest.java +++ b/jdk/test/tools/jar/UpdateManifest.java @@ -24,6 +24,7 @@ /** * @test * @bug 6434207 6442687 6984046 + * @modules jdk.jartool/sun.tools.jar * @summary Ensure that jar ufm actually updates the * existing jar file's manifest with contents of the * manifest file. diff --git a/jdk/test/tools/jar/index/MetaInf.java b/jdk/test/tools/jar/index/MetaInf.java index 706333be3a5..29108c72d2f 100644 --- a/jdk/test/tools/jar/index/MetaInf.java +++ b/jdk/test/tools/jar/index/MetaInf.java @@ -24,6 +24,7 @@ /* * @test * @bug 4408526 6854795 + * @modules jdk.jartool/sun.tools.jar * @summary Index the non-meta files in META-INF, such as META-INF/services. */ From 6c70d53d169be5f6205a633d704a54d69568e8b2 Mon Sep 17 00:00:00 2001 From: Roger Riggs Date: Thu, 28 May 2015 17:37:33 -0400 Subject: [PATCH 35/36] 8075678: java.time javadoc error in DateTimeFormatter::parsedLeapSecond 8075676: java.time package javadoc typos 8068276: java.time.chrono.HijrahChronology.eraOf() assertions may lead to misunderstanding Reviewed-by: lancea, scolebourne --- .../classes/java/time/chrono/HijrahChronology.java | 10 ++++++++++ .../classes/java/time/format/DateTimeFormatter.java | 6 +++--- .../share/classes/java/time/package-info.java | 7 ++++--- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/jdk/src/java.base/share/classes/java/time/chrono/HijrahChronology.java b/jdk/src/java.base/share/classes/java/time/chrono/HijrahChronology.java index 3dbbec5c0a4..ebe4e8a29d4 100644 --- a/jdk/src/java.base/share/classes/java/time/chrono/HijrahChronology.java +++ b/jdk/src/java.base/share/classes/java/time/chrono/HijrahChronology.java @@ -490,6 +490,16 @@ public final class HijrahChronology extends AbstractChronology implements Serial return yearOfEra; } + /** + * Creates the HijrahEra object from the numeric value. + * The Hijrah calendar system has only one era covering the + * proleptic years greater than zero. + * This method returns the singleton HijrahEra for the value 1. + * + * @param eraValue the era value + * @return the calendar system era, not null + * @throws DateTimeException if unable to create the era + */ @Override public HijrahEra eraOf(int eraValue) { switch (eraValue) { diff --git a/jdk/src/java.base/share/classes/java/time/format/DateTimeFormatter.java b/jdk/src/java.base/share/classes/java/time/format/DateTimeFormatter.java index 4a5a53cd83c..32e17093c68 100644 --- a/jdk/src/java.base/share/classes/java/time/format/DateTimeFormatter.java +++ b/jdk/src/java.base/share/classes/java/time/format/DateTimeFormatter.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1333,8 +1333,8 @@ public final class DateTimeFormatter { * If the time '23:59:60' is received, then a simple conversion is applied, * replacing the second-of-minute of 60 with 59. This query can be used * on the parse result to determine if the leap-second adjustment was made. - * The query will return one second of excess if it did adjust to remove - * the leap-second, and zero if not. Note that applying a leap-second + * The query will return {@code true} if it did adjust to remove the + * leap-second, and {@code false} if not. Note that applying a leap-second * smoothing mechanism, such as UTC-SLS, is the responsibility of the * application, as follows: *

    diff --git a/jdk/src/java.base/share/classes/java/time/package-info.java b/jdk/src/java.base/share/classes/java/time/package-info.java
    index cea222126f1..f078a08306d 100644
    --- a/jdk/src/java.base/share/classes/java/time/package-info.java
    +++ b/jdk/src/java.base/share/classes/java/time/package-info.java
    @@ -1,5 +1,5 @@
     /*
    - * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
    + * Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
      * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
      *
      * This code is free software; you can redistribute it and/or modify it
    @@ -120,9 +120,10 @@
      *
      * 

    Duration and Period

    *

    - * Beyond dates and times, the API also allows the storage of period and durations of time. + * Beyond dates and times, the API also allows the storage of periods and durations of time. * A {@link java.time.Duration} is a simple measure of time along the time-line in nanoseconds. - * A {@link java.time.Period} expresses an amount of time in units meaningful to humans, such as years or hours. + * A {@link java.time.Period} expresses an amount of time in units meaningful + * to humans, such as years or days. *

    * *

    Additional value types

    From 6329a86bcaa06ce1fe3de16a19209271f7ee4570 Mon Sep 17 00:00:00 2001 From: Staffan Larsen Date: Thu, 28 May 2015 14:54:58 -0700 Subject: [PATCH 36/36] 8080991: Compilation error with recent clang in java.base/share/native/launcher/main.c: error: comparison of array 'const_jargs' not equal to a null pointer is always true Reviewed-by: ksrini, ddehaven --- jdk/src/java.base/share/native/launcher/defines.h | 4 +++- jdk/src/java.base/share/native/launcher/main.c | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/jdk/src/java.base/share/native/launcher/defines.h b/jdk/src/java.base/share/native/launcher/defines.h index 8b00af17ce0..9b9f3a64e4c 100644 --- a/jdk/src/java.base/share/native/launcher/defines.h +++ b/jdk/src/java.base/share/native/launcher/defines.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -46,6 +46,7 @@ #ifdef JAVA_ARGS +#define HAS_JAVA_ARGS JNI_TRUE static const char* const_progname = "java"; static const char* const_jargs[] = JAVA_ARGS; /* @@ -58,6 +59,7 @@ static const char* const_jargs[] = JAVA_ARGS; #endif /* APP_CLASSPATH */ static const char* const_appclasspath[] = APP_CLASSPATH; #else /* !JAVA_ARGS */ +#define HAS_JAVA_ARGS JNI_FALSE #ifdef PROGNAME static const char* const_progname = PROGNAME; #else diff --git a/jdk/src/java.base/share/native/launcher/main.c b/jdk/src/java.base/share/native/launcher/main.c index 677eb6962f9..2dbb79be2bb 100644 --- a/jdk/src/java.base/share/native/launcher/main.c +++ b/jdk/src/java.base/share/native/launcher/main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1995, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1995, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -129,6 +129,6 @@ main(int argc, char **argv) DOT_VERSION, (const_progname != NULL) ? const_progname : *margv, (const_launcher != NULL) ? const_launcher : *margv, - (const_jargs != NULL) ? JNI_TRUE : JNI_FALSE, + HAS_JAVA_ARGS, const_cpwildcard, const_javaw, const_ergo_class); }