// HACK: reflection private void updateScenarioParameters() { for (ConfigurableObject configObj : this.scenarioParameters.values()) { String beanName = configObj.getId(); Object bean = this.context.getBean(beanName); Class<?> clazz = bean.getClass(); HashMap<String, java.lang.reflect.Field> declaredFields = new HashMap<String, java.lang.reflect.Field>(); do { for (java.lang.reflect.Field field : clazz.getDeclaredFields()) { declaredFields.put(field.getName(), field); } clazz = clazz.getSuperclass(); } while (clazz != null); clazz = bean.getClass(); for (ScenarioParameter parameter : configObj.getParameters()) { String field = this.capitalize(parameter.getField()); Object value = parameter.getValue(); Method[] methods = clazz.getMethods(); for (Method method : methods) { if (method.getName().equals("set" + field)) { try { method.invoke(bean, value); } catch (Exception e) { throw new RuntimeException(e); } ((NodeBacked) bean).persist(); break; } } } } }