Mercurial Hosting > luan
comparison src/luan/lib/JavaLib.java @ 58:d6c454b7f58c
make concat work with any type;
improve JavaLib.getMembers();
git-svn-id: https://luan-java.googlecode.com/svn/trunk@59 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Mon, 07 Jan 2013 00:18:35 +0000 |
parents | c84274b18f0c |
children | a68ccb7aaa9c |
comparison
equal
deleted
inserted
replaced
57:19ca9c4c6c7f | 58:d6c454b7f58c |
---|---|
148 | 148 |
149 private static synchronized List<Member> getMembers(Class cls,String name) { | 149 private static synchronized List<Member> getMembers(Class cls,String name) { |
150 Map<String,List<Member>> clsMap = memberMap.get(cls); | 150 Map<String,List<Member>> clsMap = memberMap.get(cls); |
151 if( clsMap == null ) { | 151 if( clsMap == null ) { |
152 clsMap = new HashMap<String,List<Member>>(); | 152 clsMap = new HashMap<String,List<Member>>(); |
153 for( Method method : cls.getMethods() ) { | |
154 String s = method.getName(); | |
155 List<Member> list = clsMap.get(s); | |
156 if( list == null ) { | |
157 list = new ArrayList<Member>(); | |
158 clsMap.put(s,list); | |
159 } | |
160 list.add(method); | |
161 } | |
153 for( Class c : cls.getClasses() ) { | 162 for( Class c : cls.getClasses() ) { |
154 String s = c.getSimpleName(); | 163 String s = c.getSimpleName(); |
155 List<Member> list = clsMap.get(s); | 164 List<Member> list = clsMap.get(s); |
156 if( list == null ) { | 165 if( list == null ) { |
157 list = new ArrayList<Member>(); | 166 list = new ArrayList<Member>(); |
159 } | 168 } |
160 list.add(new Static(c)); | 169 list.add(new Static(c)); |
161 } | 170 } |
162 for( Field field : cls.getFields() ) { | 171 for( Field field : cls.getFields() ) { |
163 String s = field.getName(); | 172 String s = field.getName(); |
173 try { | |
174 if( !cls.getField(s).equals(field) ) | |
175 continue; // not accessible | |
176 } catch(NoSuchFieldException e) { | |
177 throw new RuntimeException(e); | |
178 } | |
164 List<Member> list = clsMap.get(s); | 179 List<Member> list = clsMap.get(s); |
165 if( list == null ) { | 180 if( list != null ) |
166 list = new ArrayList<Member>(); | 181 throw new RuntimeException("can't add field '"+s+"' to "+cls+" because these are already defined: "+list); |
167 clsMap.put(s,list); | 182 list = new ArrayList<Member>(); |
168 } | 183 clsMap.put(s,list); |
169 list.add(field); | 184 list.add(field); |
170 } | |
171 for( Method method : cls.getMethods() ) { | |
172 String s = method.getName(); | |
173 List<Member> list = clsMap.get(s); | |
174 if( list == null ) { | |
175 list = new ArrayList<Member>(); | |
176 clsMap.put(s,list); | |
177 } | |
178 list.add(method); | |
179 } | 185 } |
180 memberMap.put(cls,clsMap); | 186 memberMap.put(cls,clsMap); |
181 } | 187 } |
182 List<Member> rtn = clsMap.get(name); | 188 List<Member> rtn = clsMap.get(name); |
183 if( rtn==null ) | 189 if( rtn==null ) |