Mercurial Hosting > luan
comparison src/luan/lib/JavaLib.java @ 102:90b918cbf888
add JavaLib.privateAccess
git-svn-id: https://luan-java.googlecode.com/svn/trunk@103 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Tue, 18 Jun 2013 02:46:24 +0000 |
parents | 6c827f7275df |
children | 3c404a296995 |
comparison
equal
deleted
inserted
replaced
101:8ebcccca13ab | 102:90b918cbf888 |
---|---|
212 } catch(IllegalAccessException e) { | 212 } catch(IllegalAccessException e) { |
213 throw new RuntimeException(e); | 213 throw new RuntimeException(e); |
214 } | 214 } |
215 } | 215 } |
216 | 216 |
217 public static boolean privateAccess = false; | |
217 private static Map<Class,Map<String,List<Member>>> memberMap = new HashMap<Class,Map<String,List<Member>>>(); | 218 private static Map<Class,Map<String,List<Member>>> memberMap = new HashMap<Class,Map<String,List<Member>>>(); |
218 | 219 |
219 private static synchronized List<Member> getMembers(Class cls,String name) { | 220 private static synchronized List<Member> getMembers(Class cls,String name) { |
220 Map<String,List<Member>> clsMap = memberMap.get(cls); | 221 Map<String,List<Member>> clsMap = memberMap.get(cls); |
221 if( clsMap == null ) { | 222 if( clsMap == null ) { |
234 } catch(NoSuchFieldException e) { | 235 } catch(NoSuchFieldException e) { |
235 throw new RuntimeException(e); | 236 throw new RuntimeException(e); |
236 } | 237 } |
237 List<Member> list = new ArrayList<Member>(); | 238 List<Member> list = new ArrayList<Member>(); |
238 clsMap.put(s,list); | 239 clsMap.put(s,list); |
239 list = new ArrayList<Member>(); | |
240 clsMap.put(s,list); | |
241 list.add(field); | 240 list.add(field); |
242 } | 241 } |
243 for( Method method : cls.getMethods() ) { | 242 for( Method method : cls.getMethods() ) { |
244 String s = method.getName(); | 243 String s = method.getName(); |
245 List<Member> list = clsMap.get(s); | 244 List<Member> list = clsMap.get(s); |
246 if( list == null || !(list.get(0) instanceof Method) ) { | 245 if( list == null || !(list.get(0) instanceof Method) ) { |
247 list = new ArrayList<Member>(); | 246 list = new ArrayList<Member>(); |
248 clsMap.put(s,list); | 247 clsMap.put(s,list); |
249 } | 248 } |
250 list.add(method); | 249 list.add(method); |
250 } | |
251 if( privateAccess ) { | |
252 for( Method method : cls.getDeclaredMethods() ) { | |
253 String s = method.getName(); | |
254 List<Member> list = clsMap.get(s); | |
255 if( list == null ) { | |
256 list = new ArrayList<Member>(); | |
257 clsMap.put(s,list); | |
258 } else if( !(list.get(0) instanceof Method) ) | |
259 continue; | |
260 if( !list.contains(method) ) { | |
261 list.add(method); | |
262 } | |
263 } | |
264 for( Field field : cls.getDeclaredFields() ) { | |
265 String s = field.getName(); | |
266 List<Member> list = clsMap.get(s); | |
267 if( list == null ) { | |
268 list = new ArrayList<Member>(); | |
269 clsMap.put(s,list); | |
270 list.add(field); | |
271 } | |
272 } | |
251 } | 273 } |
252 for( List<Member> members : clsMap.values() ) { | 274 for( List<Member> members : clsMap.values() ) { |
253 for( Member m : members ) { | 275 for( Member m : members ) { |
254 if( m instanceof AccessibleObject ) | 276 if( m instanceof AccessibleObject ) |
255 ((AccessibleObject)m).setAccessible(true); | 277 ((AccessibleObject)m).setAccessible(true); |