16
16
17
17
package org .springframework .util ;
18
18
19
+ import java .io .Externalizable ;
19
20
import java .io .Serializable ;
20
21
import java .lang .reflect .InvocationTargetException ;
21
22
import java .lang .reflect .Method ;
44
45
* @author Rob Harrop
45
46
* @author Rick Evans
46
47
*/
47
- @ SuppressWarnings ({ "rawtypes" , "unchecked" })
48
48
public class ClassUtilsTests {
49
49
50
50
private ClassLoader classLoader = getClass ().getClassLoader ();
51
51
52
+
52
53
@ Before
53
- public void setUp () {
54
+ public void clearStatics () {
54
55
InnerClass .noArgCalled = false ;
55
56
InnerClass .argCalled = false ;
56
57
InnerClass .overloadedCalled = false ;
57
58
}
58
59
60
+
59
61
@ Test
60
- public void testIsPresent () throws Exception {
62
+ public void testIsPresent () {
61
63
assertTrue (ClassUtils .isPresent ("java.lang.String" , classLoader ));
62
64
assertFalse (ClassUtils .isPresent ("java.lang.MySpecialString" , classLoader ));
63
65
}
@@ -114,6 +116,36 @@ public void testForNameWithPrimitiveArraysInternalName() throws ClassNotFoundExc
114
116
assertEquals (double [].class , ClassUtils .forName (double [].class .getName (), classLoader ));
115
117
}
116
118
119
+ @ Test
120
+ public void testIsCacheSafe () {
121
+ ClassLoader childLoader1 = new ClassLoader (classLoader ) {};
122
+ ClassLoader childLoader2 = new ClassLoader (classLoader ) {};
123
+ ClassLoader childLoader3 = new ClassLoader (classLoader ) {
124
+ @ Override
125
+ public Class <?> loadClass (String name ) throws ClassNotFoundException {
126
+ return childLoader1 .loadClass (name );
127
+ }
128
+ };
129
+ Class <?> composite = ClassUtils .createCompositeInterface (
130
+ new Class <?>[] {Serializable .class , Externalizable .class }, childLoader1 );
131
+
132
+ assertTrue (ClassUtils .isCacheSafe (String .class , null ));
133
+ assertTrue (ClassUtils .isCacheSafe (String .class , classLoader ));
134
+ assertTrue (ClassUtils .isCacheSafe (String .class , childLoader1 ));
135
+ assertTrue (ClassUtils .isCacheSafe (String .class , childLoader2 ));
136
+ assertTrue (ClassUtils .isCacheSafe (String .class , childLoader3 ));
137
+ assertFalse (ClassUtils .isCacheSafe (InnerClass .class , null ));
138
+ assertTrue (ClassUtils .isCacheSafe (InnerClass .class , classLoader ));
139
+ assertTrue (ClassUtils .isCacheSafe (InnerClass .class , childLoader1 ));
140
+ assertTrue (ClassUtils .isCacheSafe (InnerClass .class , childLoader2 ));
141
+ assertTrue (ClassUtils .isCacheSafe (InnerClass .class , childLoader3 ));
142
+ assertFalse (ClassUtils .isCacheSafe (composite , null ));
143
+ assertFalse (ClassUtils .isCacheSafe (composite , classLoader ));
144
+ assertTrue (ClassUtils .isCacheSafe (composite , childLoader1 ));
145
+ assertFalse (ClassUtils .isCacheSafe (composite , childLoader2 ));
146
+ assertTrue (ClassUtils .isCacheSafe (composite , childLoader3 ));
147
+ }
148
+
117
149
@ Test
118
150
public void testGetShortName () {
119
151
String className = ClassUtils .getShortName (getClass ());
@@ -199,15 +231,15 @@ public void testGetQualifiedNameForMultiDimensionalPrimitiveArrayClass() {
199
231
}
200
232
201
233
@ Test
202
- public void testHasMethod () throws Exception {
234
+ public void testHasMethod () {
203
235
assertTrue (ClassUtils .hasMethod (Collection .class , "size" ));
204
236
assertTrue (ClassUtils .hasMethod (Collection .class , "remove" , Object .class ));
205
237
assertFalse (ClassUtils .hasMethod (Collection .class , "remove" ));
206
238
assertFalse (ClassUtils .hasMethod (Collection .class , "someOtherMethod" ));
207
239
}
208
240
209
241
@ Test
210
- public void testGetMethodIfAvailable () throws Exception {
242
+ public void testGetMethodIfAvailable () {
211
243
Method method = ClassUtils .getMethodIfAvailable (Collection .class , "size" );
212
244
assertNotNull (method );
213
245
assertEquals ("size" , method .getName ());
@@ -278,7 +310,7 @@ public void testIsAssignable() {
278
310
@ Test
279
311
public void testClassPackageAsResourcePath () {
280
312
String result = ClassUtils .classPackageAsResourcePath (Proxy .class );
281
- assertTrue ( result . equals ( "java/lang/reflect" ) );
313
+ assertEquals ( "java/lang/reflect" , result );
282
314
}
283
315
284
316
@ Test
@@ -294,7 +326,7 @@ public void testAddResourcePathToPackagePath() {
294
326
@ Test
295
327
public void testGetAllInterfaces () {
296
328
DerivedTestObject testBean = new DerivedTestObject ();
297
- List ifcs = Arrays .asList (ClassUtils .getAllInterfaces (testBean ));
329
+ List < Class <?>> ifcs = Arrays .asList (ClassUtils .getAllInterfaces (testBean ));
298
330
assertEquals ("Correct number of interfaces" , 4 , ifcs .size ());
299
331
assertTrue ("Contains Serializable" , ifcs .contains (Serializable .class ));
300
332
assertTrue ("Contains ITestBean" , ifcs .contains (ITestObject .class ));
@@ -303,13 +335,13 @@ public void testGetAllInterfaces() {
303
335
304
336
@ Test
305
337
public void testClassNamesToString () {
306
- List ifcs = new LinkedList ();
338
+ List < Class <?>> ifcs = new LinkedList <> ();
307
339
ifcs .add (Serializable .class );
308
340
ifcs .add (Runnable .class );
309
341
assertEquals ("[interface java.io.Serializable, interface java.lang.Runnable]" , ifcs .toString ());
310
342
assertEquals ("[java.io.Serializable, java.lang.Runnable]" , ClassUtils .classNamesToString (ifcs ));
311
343
312
- List classes = new LinkedList ();
344
+ List < Class <?>> classes = new LinkedList <> ();
313
345
classes .add (LinkedList .class );
314
346
classes .add (Integer .class );
315
347
assertEquals ("[class java.util.LinkedList, class java.lang.Integer]" , classes .toString ());
@@ -319,7 +351,7 @@ public void testClassNamesToString() {
319
351
assertEquals ("[java.util.List]" , ClassUtils .classNamesToString (List .class ));
320
352
321
353
assertEquals ("[]" , Collections .EMPTY_LIST .toString ());
322
- assertEquals ("[]" , ClassUtils .classNamesToString (Collections .EMPTY_LIST ));
354
+ assertEquals ("[]" , ClassUtils .classNamesToString (Collections .emptyList () ));
323
355
}
324
356
325
357
@ Test
0 commit comments