@SuppressWarnings("unchecked") public static <X> X setNestedValue(BaseModel model, List<String> paths, Object value) { int index = paths.size() - 1; String path = paths.get(index); paths.remove(index); BaseModel m = getNestedValue(model, paths); m.set(path, value); return (X) m.get(path); }
@SuppressWarnings("unchecked") public static <X> X getNestedValue(BaseModel model, List<String> paths) { Object obj = model.get(paths.get(0)); if (paths.size() == 1) { return (X) obj; } else if (obj != null && obj instanceof BaseModel) { List<String> tmp = new ArrayList<String>(paths); tmp.remove(0); return (X) getNestedValue((BaseModel) obj, tmp); } return null; }