- Timestamp:
- 06/30/13 12:48:20 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
java/main/src/main/java/com/framsticks/params/ReflectionAccess.java
r87 r88 6 6 import java.util.Collections; 7 7 import java.util.HashMap; 8 import java.util.LinkedList; 9 import java.util.List; 8 10 import java.util.Map; 9 11 … … 37 39 public static class Backend { 38 40 39 protected static Map<Pair<Class<?>, FramsClass>, Backend> synchronizedCache = Collections.synchronizedMap(new HashMap<Pair<Class<?>, FramsClass>, Backend>());41 protected static final Map<Pair<Class<?>, FramsClass>, Backend> synchronizedCache = Collections.synchronizedMap(new HashMap<Pair<Class<?>, FramsClass>, Backend>()); 40 42 41 43 public static class ReflectedValueParam { … … 53 55 54 56 protected final Map<ValueParam, ReflectedValueParam> params; 55 protected final Map<Class<?>,Method> autoAppendMethods;57 protected final List<Method> autoAppendMethods; 56 58 57 59 /** 58 60 * @param params 59 61 */ 60 public Backend(Map<ValueParam, ReflectedValueParam> params, Map<Class<?>,Method> autoAppendMethods) {62 public Backend(Map<ValueParam, ReflectedValueParam> params, List<Method> autoAppendMethods) { 61 63 // this.params = Collections.unmodifiableMap(params); 62 64 this.params = params; … … 140 142 } 141 143 142 Map<Class<?>, Method> autoAppendMethods = new HashMap<>();144 List<Method> autoAppendMethods = new LinkedList<>(); 143 145 144 146 Class<?> javaClass = reflectedClass; … … 154 156 throw new ConstructionException().msg("invalid number of arguments in AutoAppend marked method").arg("method", m).arg("arguments", args.length); 155 157 } 156 autoAppendMethods. put(args[0],m);158 autoAppendMethods.add(m); 157 159 } 158 160 … … 327 329 public boolean tryAutoAppend(Object value) { 328 330 assert object != null; 329 for (M ap.Entry<Class<?>, Method> a : backend.autoAppendMethods.entrySet()) {330 if ( a.getKey().isAssignableFrom(value.getClass())) {331 for (Method m : backend.autoAppendMethods) { 332 if (m.getParameterTypes()[0].isAssignableFrom(value.getClass())) { 331 333 try { 332 a.getValue().invoke(object, value);334 m.invoke(object, value); 333 335 return true; 334 } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {335 throw new FramsticksException().msg("failed to auto append").cause(e).arg("value", value).arg("into object", object).arg("with method", a.getValue());336 } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | FramsticksException e) { 337 throw new FramsticksException().msg("failed to auto append").cause(e).arg("value", value).arg("into object", object).arg("with method", m); 336 338 } 337 339 }
Note: See TracChangeset
for help on using the changeset viewer.