13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 import java.lang.module.Configuration;
25 import java.lang.module.ModuleFinder;
26 import java.lang.reflect.Layer;
27 import java.lang.reflect.Proxy;
28 import java.nio.file.Path;
29 import java.nio.file.Paths;
30 import java.util.Arrays;
31 import java.util.List;
32
33 import static jdk.testlibrary.ProcessTools.executeTestJava;
34
35 import org.testng.annotations.BeforeTest;
36 import org.testng.annotations.Test;
37 import static org.testng.Assert.*;
38
39 /**
40 * @test
41 * @library /lib/testlibrary
42 * @modules jdk.compiler
43 * @build ProxyClassAccessTest q.NP CompilerUtils jdk.testlibrary.*
44 * @run testng ProxyClassAccessTest
45 * @summary Driver for testing proxy class doesn't have access to
46 * types referenced by proxy interfaces
47 */
48
49 public class ProxyClassAccessTest {
50
51 private static final String TEST_SRC = System.getProperty("test.src");
52 private static final String TEST_CLASSES = System.getProperty("test.classes");
53
56
57 // the names of the modules in this test
58 private static List<String> modules = Arrays.asList("m1", "m2", "m3", "test");
59
60 /**
61 * Compiles all modules used by the test
62 */
63 @BeforeTest
64 public void compileAll() throws Exception {
65 for (String mn : modules) {
66 Path msrc = SRC_DIR.resolve(mn);
67 assertTrue(CompilerUtils.compile(msrc, MODS_DIR, "-modulesourcepath", SRC_DIR.toString()));
68 }
69 }
70
71 /**
72 * Run the modular test
73 */
74 @Test
75 public void runTest() throws Exception {
76 int exitValue = executeTestJava("-mp", MODS_DIR.toString(),
77 "-m", "test/jdk.test.ProxyClassAccess")
78 .outputTo(System.out)
79 .errorTo(System.out)
80 .getExitValue();
81
82 assertTrue(exitValue == 0);
83 }
84
85 /**
86 * Test unnamed module has no access to other proxy interface
87 */
88 @Test
89 public void testNoReadAccess() throws Exception {
90 ModuleFinder finder = ModuleFinder.of(MODS_DIR);
91 Layer bootLayer = Layer.boot();
92 Configuration cf = bootLayer
93 .configuration()
94 .resolveRequiresAndUses(ModuleFinder.of(), finder, modules);
95 ClassLoader parentLoader = this.getClass().getClassLoader();
96 Layer layer = bootLayer.defineModulesWithOneLoader(cf, parentLoader);
97
|
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 import java.lang.module.Configuration;
25 import java.lang.module.ModuleFinder;
26 import java.lang.reflect.Layer;
27 import java.lang.reflect.Proxy;
28 import java.nio.file.Path;
29 import java.nio.file.Paths;
30 import java.util.Arrays;
31 import java.util.List;
32
33 import static jdk.testlibrary.ProcessTools.*;
34
35 import org.testng.annotations.BeforeTest;
36 import org.testng.annotations.Test;
37 import static org.testng.Assert.*;
38
39 /**
40 * @test
41 * @library /lib/testlibrary
42 * @modules jdk.compiler
43 * @build ProxyClassAccessTest q.NP CompilerUtils jdk.testlibrary.*
44 * @run testng ProxyClassAccessTest
45 * @summary Driver for testing proxy class doesn't have access to
46 * types referenced by proxy interfaces
47 */
48
49 public class ProxyClassAccessTest {
50
51 private static final String TEST_SRC = System.getProperty("test.src");
52 private static final String TEST_CLASSES = System.getProperty("test.classes");
53
56
57 // the names of the modules in this test
58 private static List<String> modules = Arrays.asList("m1", "m2", "m3", "test");
59
60 /**
61 * Compiles all modules used by the test
62 */
63 @BeforeTest
64 public void compileAll() throws Exception {
65 for (String mn : modules) {
66 Path msrc = SRC_DIR.resolve(mn);
67 assertTrue(CompilerUtils.compile(msrc, MODS_DIR, "-modulesourcepath", SRC_DIR.toString()));
68 }
69 }
70
71 /**
72 * Run the modular test
73 */
74 @Test
75 public void runTest() throws Exception {
76 int exitValue = executeProcess(createJavaProcessBuilder("-mp", MODS_DIR.toString(),
77 "-m", "test/jdk.test.ProxyClassAccess"))
78 .outputTo(System.out)
79 .errorTo(System.out)
80 .getExitValue();
81
82 assertTrue(exitValue == 0);
83 }
84
85 /**
86 * Test unnamed module has no access to other proxy interface
87 */
88 @Test
89 public void testNoReadAccess() throws Exception {
90 ModuleFinder finder = ModuleFinder.of(MODS_DIR);
91 Layer bootLayer = Layer.boot();
92 Configuration cf = bootLayer
93 .configuration()
94 .resolveRequiresAndUses(ModuleFinder.of(), finder, modules);
95 ClassLoader parentLoader = this.getClass().getClassLoader();
96 Layer layer = bootLayer.defineModulesWithOneLoader(cf, parentLoader);
97
|