1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package org.apache.commons.ognl.internal;
23
24 import org.apache.commons.ognl.internal.entry.MethodAccessCacheEntryFactory;
25 import org.apache.commons.ognl.internal.entry.MethodAccessEntryValue;
26 import org.apache.commons.ognl.test.objects.Root;
27 import org.junit.Assert;
28 import org.junit.Test;
29
30 import java.lang.reflect.Method;
31
32
33
34
35
36
37 public class MethodAccessCacheTest
38 {
39 private Cache<Method, MethodAccessEntryValue> cache =
40 new ConcurrentHashMapCache<Method, MethodAccessEntryValue>( new MethodAccessCacheEntryFactory( ) );
41
42 @Test
43 public void testGetAccessibleNonPublicMethod( )
44 throws Exception
45 {
46 Method method = Root.class.getDeclaredMethod( "getPrivateAccessorIntValue3" );
47 MethodAccessEntryValue methodAccessValue = cache.get( method );
48 Assert.assertTrue( methodAccessValue.isNotPublic( ) );
49 Assert.assertFalse( methodAccessValue.isAccessible());
50 }
51
52 @Test
53 public void testGetNotAccessibleNonPublicMethod( )
54 throws Exception
55 {
56 Method method = Root.class.getDeclaredMethod( "getPrivateAccessorIntValue3" );
57 method.setAccessible( true );
58 MethodAccessEntryValue methodAccessValue = cache.get( method );
59 Assert.assertTrue( methodAccessValue.isNotPublic( ) );
60 Assert.assertTrue( methodAccessValue.isAccessible());
61 }
62
63 @Test
64 public void testGetPublicMethod( )
65 throws NoSuchMethodException, CacheException
66 {
67 Method method = Root.class.getDeclaredMethod( "getArray" );
68 MethodAccessEntryValue methodAccessValue = cache.get( method );
69 Assert.assertFalse( methodAccessValue.isNotPublic( ) );
70 Assert.assertTrue( methodAccessValue.isAccessible());
71 }
72
73 }