Предполагается, что есть REST API для создания ученика
@POST
@Path("/student")
public Response createStudent(CreateStudentRequest request) {
...
}
Здесь допустим, что CreateStudentRequest выглядит следующим образом:
@Getter
@Setter
public class CreateStudentRequest {
@JsonProperty("name")
private String name;
@JsonProperty("age")
private int age;
@JsonProperty("subjects")
private String subjects;
private List<Subject> subjectList;
}
@NoArgsConstructor
@AllArgsConstructor
public enum Subject {
PQR("pqr"),
XYZ("xyz");
private String identifier;
public static Subject fromString(final String value) {
for (final Subject subject : Subject.values()) {
if (value.equalsIgnoreCase(subject.identifier)) {
return subject;
}
}
throw new IllegalArgumentException("Unknown Subject:" + value);
}
}
При вызове API передаваемый json содержит разделенный запятыми список предметов для студента (это фиксируется на основе контракта API и не может быть изменено на список строк):
POST /student
{
"name" : "abc",
"age" : 25,
"subjects" : "pqr, xyz"
}
Теперь я хочу заполнить параметр subjectList в экземпляре Student, когда экземпляр Student создается на основе значений, разделенных запятыми в subject строка.
Есть ли какая-нибудь аннотация, которая может помочь мне сделать это - что-то, что вызывает заполнение списка, как только строке subject будет присвоено значение?
Одним из способов является использование какого-либо метода для его последующей установки снаружи. Я не хочу устанавливать это таким образом, так как это будет означать, что в каждом месте должен вызываться этот метод. Если бы это можно было легко установить с внешней точки зрения, было бы здорово.
Есть предложения по этому поводу?