Я строю службу RESTful, где предполагается, что конечные точки создаются на основе описания файла ресурсов. Регистрация ресурсов с помощью неявного обработчика конструктора методов работает очень хорошо, однако, когда я пытаюсь заменить явный ящик явным, я нажимаю на стену.Пользовательский джерси Inflector
В приведенном ниже примере я заменил неявный обработчик Inflector явной реализацией ItemInflector. Результат строки ожидается после выполнения.
final Resource.Builder resourceBuilder = Resource.builder();
resourceBuilder.path("api/myservice/item");
final ResourceMethod.Builder methodBuilder = resourceBuilder.addMethod("GET");
methodBuilder.produces(MediaType.TEXT_PLAIN_TYPE)
.handledBy(new ItemInflector<ContainerRequestContext, String>(String.class));
final Resource resource = resourceBuilder.build();
registerResources(resource);
реализация ItenInflector:
public class ItemInflector<DATA extends ContainerRequestContext, RESULT> implements Inflector<DATA, RESULT> {
private Class<RESULT> type;
public ItemInflector(Class<RESULT> type) {
this.type = type;
}
@Override
public RESULT apply(DATA data) {
return type.cast("Half programmatically generated endpoint");
}
}
Во время выполнения следующих действий ошибка возникает при попытке ударить конечной точки.
Caused by: java.lang.IllegalArgumentException: Type parameter RESULT not a class or parameterized type whose raw type is a class
Может кто-то прояснить, что я делаю неправильно в реализации Inflector? Как параметризовать или определить тип РЕЗУЛЬТАТ?
Не могли бы вы обновить вторых, он сломан. – Maxim
уже сделано :) –