ExecutableElement selectorMethod,
TypeMirror firstParameter) throws ResolveException {
assert environment != null;
assert selectorMethod != null;
assert firstParameter != null;
TypeMirror erasedSelector = environment.getErasure(firstParameter);
Types types = environment.getTypeUtils();
if (types.isSameType(erasedSelector, environment.getDeclaredType(List.class)) == false) {
throw new ResolveException(MessageFormat.format(
"マスタ選択を行うメソッド{0}の1つめの引数は、List<...>の形式でなければなりません",
selectorMethod.getSimpleName()));
}
DeclaredType list = (DeclaredType) firstParameter;
if (list.getTypeArguments().size() != 1) {
throw new ResolveException(MessageFormat.format(
"マスタ選択を行うメソッド{0}の1つめの引数は、List<...>の形式でなければなりません",
selectorMethod.getSimpleName()));
}
TypeMirror selectorElement = list.getTypeArguments().get(0);
return environment.loadDataModel(selectorElement);
}