1313import java .util .ArrayList ;
1414import java .util .Arrays ;
1515import java .util .List ;
16+ import java .util .Objects ;
1617import java .util .regex .Pattern ;
1718
1819import org .aspectj .apache .bcel .classfile .ClassFormatException ;
3031import junit .framework .TestCase ;
3132
3233/**
33- * Should run these tests 3 times on each JDK level (8, 9, 11). On each one 3 of the
34- * tests should pass indicating that JDK can successfully access system types in
35- * each JDK level.
34+ * Should run these tests 3 times on each JDK level (8, 9, 11). On each one 3 of the tests should pass indicating that
35+ * JDK can successfully access system types in each JDK level.
3636 *
3737 * @author Andy Clement
3838 */
3939public class ClasspathManagerTestCase extends TestCase {
4040
4141 // Works on my machine where all jvms under ~/jvms
42- private static String java18_rtjar = findJvm ("j.*18.*" ,"rt.jar" );
43- private static String java9_jrtfsjar = findJvm ("j.*9.*" ,"jrt-fs.jar" ); ;
44- private static String java11_jrtfsjar = findJvm ("j.*11.*" ,"jrt-fs.jar" ); ;
42+ private static final String java18_rtjar = findJvm ("j.*18.*" , "rt.jar" );
43+ private static final String java9_jrtfsjar = findJvm ("j.*9.*" , "jrt-fs.jar" );
44+ private static final String java11_jrtfsjar = findJvm ("j.*11.*" , "jrt-fs.jar" );
4545
4646 private static String findJvm (String pattern , String jar ) {
47- String start = System .getProperty ("user.home" )+ "/jvms" ;
47+ String start = System .getProperty ("user.home" ) + "/jvms" ;
4848 if (new File (start ).isDirectory ()) {
49- for (File f : new File (start ).listFiles ()) {
49+ for (File f : Objects . requireNonNull ( new File (start ).listFiles () )) {
5050 if (f .isDirectory () && Pattern .matches (pattern , f .getName ())) {
5151 File result = walk (f , jar );
5252 if (result != null ) {
@@ -61,15 +61,14 @@ private static String findJvm(String pattern, String jar) {
6161
6262 private static File walk (File dir , String jar ) {
6363 File [] fs = dir .listFiles ();
64- if (fs != null ) {
65- for (File f : fs ) {
66- if (f .getName ().equals (jar )) {
64+ if (fs != null ) {
65+ for (File f : fs ) {
66+ if (f .getName ().equals (jar ))
6767 return f ;
68- } else if (f .isDirectory ()) {
68+ else if (f .isDirectory ()) {
6969 File s = walk (f , jar );
70- if (s != null ) {
70+ if (s != null )
7171 return s ;
72- }
7372 }
7473 }
7574 }
@@ -106,119 +105,122 @@ public void testUnfoundClassPerformance() {
106105 );
107106 }
108107
109- public void xtestSanity18accessing18RTJAR () throws IOException {
110- if (LangUtil .getVmVersion ()>8 ) fail ("Must be Java 8" );
111- List <String > classpath = new ArrayList <>();
112- classpath .add (java18_rtjar );
113- ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
114- ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/Object;" ));
115- assertNotNull (t );
116- }
117-
118- public void xtestJava18accessing11JRT () throws ClassFormatException , IOException {
119- if (LangUtil .getVmVersion ()>8 ) fail ("Must be Java 8" );
120- List <String > classpath = new ArrayList <>();
121- classpath .add (java11_jrtfsjar );
122- ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
123- ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/String;" ));
124- assertNotNull (t );
125- ClassParser classParser = new ClassParser (t .getInputStream (),t .getPath ());
126- JavaClass clazz = classParser .parse ();
127- // isBlank() exists on Java 11
128- long c = Arrays .asList (clazz .getMethods ()).stream ().filter (m -> m .getName ().equals ("isBlank" )).count ();
129- assertEquals (1 ,c );
130- }
131-
132- public void xtestJava18accessing19JRT () throws ClassFormatException , IOException {
133- if (LangUtil .getVmVersion ()>8 ) fail ("Must be Java 8" );
134- List <String > classpath = new ArrayList <>();
135- classpath .add (java9_jrtfsjar );
136- ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
137- ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/String;" ));
138- assertNotNull (t );
139- ClassParser classParser = new ClassParser (t .getInputStream (),t .getPath ());
140- JavaClass clazz = classParser .parse ();
141- // isBlank() exists on Java 11, but not on Java9
142- long c = Arrays .asList (clazz .getMethods ()).stream ().filter (m -> m .getName ().equals ("isBlank" )).count ();
143- assertEquals (0 ,c );
144- }
145-
146-
147- public void xtestSanity19accessing18RTJAR () throws IOException {
148- assertEquals (9.0 ,LangUtil .getVmVersion ());
149- List <String > classpath = new ArrayList <>();
150- classpath .add (java18_rtjar );
151- ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
152- ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/Object;" ));
153- assertNotNull (t );
154- }
155-
156- public void xtestJava19accessing11JRT () throws ClassFormatException , IOException {
157- assertEquals (9.0 ,LangUtil .getVmVersion ());
158- List <String > classpath = new ArrayList <>();
159- classpath .add (java11_jrtfsjar );
160- ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
161- ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/String;" ));
162- assertNotNull (t );
163- ClassParser classParser = new ClassParser (t .getInputStream (),t .getPath ());
164- JavaClass clazz = classParser .parse ();
165- // isBlank() exists on Java 11
166- long c = Arrays .asList (clazz .getMethods ()).stream ().filter (m -> m .getName ().equals ("isBlank" )).count ();
167- assertEquals (1 ,c );
168- }
169-
170- public void xtestJava19accessing19JRT () throws ClassFormatException , IOException {
171- assertEquals (9.0 ,LangUtil .getVmVersion ());
172- List <String > classpath = new ArrayList <>();
173- classpath .add (java9_jrtfsjar );
174- ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
175- ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/String;" ));
176- assertNotNull (t );
177- ClassParser classParser = new ClassParser (t .getInputStream (),t .getPath ());
178- JavaClass clazz = classParser .parse ();
179- // isBlank() exists on Java 11, but not on Java9
180- long c = Arrays .asList (clazz .getMethods ()).stream ().filter (m -> m .getName ().equals ("isBlank" )).count ();
181- assertEquals (0 ,c );
182- }
183-
184- public void xtestSanity11accessing18RTJAR () throws IOException {
185- assertEquals (11.0 ,LangUtil .getVmVersion ());
186- List <String > classpath = new ArrayList <>();
187- classpath .add (java18_rtjar );
188- ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
189- ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/Object;" ));
190- assertNotNull (t );
191- }
192-
193- public void xtestJava11accessing11JRT () throws ClassFormatException , IOException {
194- assertEquals (11.0 ,LangUtil .getVmVersion ());
195- List <String > classpath = new ArrayList <>();
196- classpath .add (java11_jrtfsjar );
197- ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
198- ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/String;" ));
199- assertNotNull (t );
200- ClassParser classParser = new ClassParser (t .getInputStream (),t .getPath ());
201- JavaClass clazz = classParser .parse ();
202- // isBlank() exists on Java 11
203- long c = Arrays .asList (clazz .getMethods ()).stream ().filter (m -> m .getName ().equals ("isBlank" )).count ();
204- assertEquals (1 ,c );
205- }
206-
207- public void xtestJava11accessing19JRT () throws ClassFormatException , IOException {
208- assertEquals (11.0 ,LangUtil .getVmVersion ());
209- List <String > classpath = new ArrayList <>();
210- classpath .add (java9_jrtfsjar );
211- ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
212- ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/String;" ));
213- assertNotNull (t );
214- ClassParser classParser = new ClassParser (t .getInputStream (),t .getPath ());
215- JavaClass clazz = classParser .parse ();
216- // isBlank() exists on Java 11, but not on Java9
217- long c = Arrays .asList (clazz .getMethods ()).stream ().filter (m -> m .getName ().equals ("isBlank" )).count ();
218- assertEquals (0 ,c );
219- }
220-
221- static class MH implements IMessageHandler {
108+ public void xtestSanity18accessing18RTJAR () {
109+ if (LangUtil .getVmVersion () > 8 )
110+ fail ("Must be Java 8" );
111+ List <String > classpath = new ArrayList <>();
112+ classpath .add (java18_rtjar );
113+ ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
114+ ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/Object;" ));
115+ assertNotNull (t );
116+ }
117+
118+ public void xtestJava18accessing11JRT () throws ClassFormatException , IOException {
119+ if (LangUtil .getVmVersion () > 8 )
120+ fail ("Must be Java 8" );
121+ List <String > classpath = new ArrayList <>();
122+ classpath .add (java11_jrtfsjar );
123+ ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
124+ ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/String;" ));
125+ assertNotNull (t );
126+ ClassParser classParser = new ClassParser (t .getInputStream (), t .getPath ());
127+ JavaClass clazz = classParser .parse ();
128+ // isBlank() exists on Java 11
129+ long c = Arrays .stream (clazz .getMethods ()).filter (m -> m .getName ().equals ("isBlank" )).count ();
130+ assertEquals (1 , c );
131+ }
132+
133+ public void xtestJava18accessing19JRT () throws ClassFormatException , IOException {
134+ if (LangUtil .getVmVersion () > 8 )
135+ fail ("Must be Java 8" );
136+ List <String > classpath = new ArrayList <>();
137+ classpath .add (java9_jrtfsjar );
138+ ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
139+ ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/String;" ));
140+ assertNotNull (t );
141+ ClassParser classParser = new ClassParser (t .getInputStream (), t .getPath ());
142+ JavaClass clazz = classParser .parse ();
143+ // isBlank() exists on Java 11, but not on Java9
144+ long c = Arrays .stream (clazz .getMethods ()).filter (m -> m .getName ().equals ("isBlank" )).count ();
145+ assertEquals (0 , c );
146+ }
147+
148+
149+ public void xtestSanity19accessing18RTJAR () {
150+ assertEquals (9.0 , LangUtil .getVmVersion ());
151+ List <String > classpath = new ArrayList <>();
152+ classpath .add (java18_rtjar );
153+ ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
154+ ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/Object;" ));
155+ assertNotNull (t );
156+ }
157+
158+ public void xtestJava19accessing11JRT () throws ClassFormatException , IOException {
159+ assertEquals (9.0 , LangUtil .getVmVersion ());
160+ List <String > classpath = new ArrayList <>();
161+ classpath .add (java11_jrtfsjar );
162+ ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
163+ ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/String;" ));
164+ assertNotNull (t );
165+ ClassParser classParser = new ClassParser (t .getInputStream (), t .getPath ());
166+ JavaClass clazz = classParser .parse ();
167+ // isBlank() exists on Java 11
168+ long c = Arrays .stream (clazz .getMethods ()).filter (m -> m .getName ().equals ("isBlank" )).count ();
169+ assertEquals (1 , c );
170+ }
171+
172+ public void xtestJava19accessing19JRT () throws ClassFormatException , IOException {
173+ assertEquals (9.0 , LangUtil .getVmVersion ());
174+ List <String > classpath = new ArrayList <>();
175+ classpath .add (java9_jrtfsjar );
176+ ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
177+ ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/String;" ));
178+ assertNotNull (t );
179+ ClassParser classParser = new ClassParser (t .getInputStream (), t .getPath ());
180+ JavaClass clazz = classParser .parse ();
181+ // isBlank() exists on Java 11, but not on Java9
182+ long c = Arrays .stream (clazz .getMethods ()).filter (m -> m .getName ().equals ("isBlank" )).count ();
183+ assertEquals (0 , c );
184+ }
185+
186+ public void xtestSanity11accessing18RTJAR () {
187+ assertEquals (11.0 , LangUtil .getVmVersion ());
188+ List <String > classpath = new ArrayList <>();
189+ classpath .add (java18_rtjar );
190+ ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
191+ ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/Object;" ));
192+ assertNotNull (t );
193+ }
194+
195+ public void xtestJava11accessing11JRT () throws ClassFormatException , IOException {
196+ assertEquals (11.0 , LangUtil .getVmVersion ());
197+ List <String > classpath = new ArrayList <>();
198+ classpath .add (java11_jrtfsjar );
199+ ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
200+ ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/String;" ));
201+ assertNotNull (t );
202+ ClassParser classParser = new ClassParser (t .getInputStream (), t .getPath ());
203+ JavaClass clazz = classParser .parse ();
204+ // isBlank() exists on Java 11
205+ long c = Arrays .stream (clazz .getMethods ()).filter (m -> m .getName ().equals ("isBlank" )).count ();
206+ assertEquals (1 , c );
207+ }
208+
209+ public void xtestJava11accessing19JRT () throws ClassFormatException , IOException {
210+ assertEquals (11.0 , LangUtil .getVmVersion ());
211+ List <String > classpath = new ArrayList <>();
212+ classpath .add (java9_jrtfsjar );
213+ ClassPathManager cpm = new ClassPathManager (classpath , new MH ());
214+ ClassFile t = cpm .find (UnresolvedType .forSignature ("Ljava/lang/String;" ));
215+ assertNotNull (t );
216+ ClassParser classParser = new ClassParser (t .getInputStream (), t .getPath ());
217+ JavaClass clazz = classParser .parse ();
218+ // isBlank() exists on Java 11, but not on Java9
219+ long c = Arrays .stream (clazz .getMethods ()).filter (m -> m .getName ().equals ("isBlank" )).count ();
220+ assertEquals (0 , c );
221+ }
222+
223+ static class MH implements IMessageHandler {
222224
223225 @ Override
224226 public boolean handleMessage (IMessage message ) throws AbortException {
@@ -232,12 +234,10 @@ public boolean isIgnoring(Kind kind) {
232234 }
233235
234236 @ Override
235- public void dontIgnore (Kind kind ) {
236- }
237+ public void dontIgnore (Kind kind ) {}
237238
238239 @ Override
239- public void ignore (Kind kind ) {
240- }
240+ public void ignore (Kind kind ) {}
241241
242- }
242+ }
243243}
0 commit comments