Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/net/URLClassLoader/closetest/GetResourceAsStream.java
38828 views
1
/*
2
* Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
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
/**
25
* @test
26
* @bug 6899919
27
* @library /lib/testlibrary
28
* @build jdk.testlibrary.*
29
* @run shell build2.sh
30
* @run main/othervm GetResourceAsStream
31
*/
32
33
import java.io.*;
34
import java.net.*;
35
36
public class GetResourceAsStream extends Common {
37
38
/*
39
* We simply test various scenarios with class/resource files
40
* and make sure the files can be deleted after closing
41
* the loader. Therefore, the test will only really be verified
42
* on Windows. It will still run correctly on other platforms
43
*/
44
public static void main (String args[]) throws Exception {
45
46
String workdir = System.getProperty("test.classes");
47
if (workdir == null) {
48
workdir = args[0];
49
}
50
51
/* the jar we copy for each test */
52
File srcfile = new File (workdir, "foo.jar");
53
54
/* the jar we use for the test */
55
File testfile = new File (workdir, "test.jar");
56
57
copyFile (srcfile, testfile);
58
test (testfile, false, false);
59
60
copyFile (srcfile, testfile);
61
test (testfile, true, false);
62
63
copyFile (srcfile, testfile);
64
test (testfile, true, true);
65
66
// repeat test using a directory of files
67
68
File testdir= new File (workdir, "testdir");
69
File srcdir= new File (workdir, "test3");
70
71
copyDir (srcdir, testdir);
72
test (testdir, true, false);
73
74
}
75
76
// create a loader on jarfile (or directory)
77
// load a class , then look for a resource
78
// then close the loader
79
// check further new classes/resources cannot be loaded
80
// check jar (or dir) can be deleted
81
82
static void test (File file, boolean loadclass, boolean readall)
83
throws Exception
84
{
85
URL[] urls = new URL[] {file.toURL()};
86
System.out.println ("Doing tests with URL: " + urls[0]);
87
URLClassLoader loader = new URLClassLoader (urls);
88
if (loadclass) {
89
Class testclass = loadClass ("com.foo.TestClass", loader, true);
90
}
91
InputStream s = loader.getResourceAsStream ("hello.txt");
92
s.read();
93
if (readall) {
94
while (s.read() != -1) ;
95
s.close();
96
}
97
98
loader.close ();
99
100
// shouuld not find bye.txt now
101
InputStream s1 = loader.getResourceAsStream("bye.txt");
102
if (s1 != null) {
103
throw new RuntimeException ("closed loader returned resource");
104
}
105
106
// now check we can delete the path
107
rm_minus_rf (file);
108
System.out.println (" ... OK");
109
}
110
}
111
112