ClassCastException при запросе метода post с использованием реализации сервиса Джерси - PullRequest
0 голосов
/ 12 февраля 2019

Я разрабатываю универсальный уровень для поддержки методов Get, POST, PUT и DELETE, чтобы сделать универсальный на всех уровнях интерфейса сервиса.

Как прототип реализации универсального сервиса приведен ниже

public interface Service<T, R extends Response> {
        @POST
    @Path("/")
    public R save(T t);
}

И расширение этого интерфейса, как показано ниже

@Path("/groups")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes({ MediaType.APPLICATION_JSON })
public interface TestService extends Service<TestDto, TestResponse> {
}

Теперь реализован TestService

@Component
public class DefaultTestService implements TestService{
       @Override
    public TestResponse save(final TestDto dto) {
}

TestDto

public class GroupDto implements Serializable {
    /**
     * 
     */
    private static final long serialVersionUID = -5032651788358462207L;

    private String parentId;

    private String name;

       // setter and getter
}

при запросе метода сохранения. Джерси выдает одно предупреждение, как показано ниже:

WARNING: Parameter 1 of type T from public com.idsk.infoviewer.service.model.response.TestResponse com.idsk.infoviewer.service.rest.DefaultTestService.save(com.idsk.infoviewer.service.model.TestDto) is not resolvable to a concrete type.

При вызове метода сохранения получено исключение:

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to com.idsk.infoviewer.service.model.TestDto
    at com.idsk.infoviewer.service.rest.DefaultTestService.save(DefaultTestService.java:1)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

В качестве Джексона используется компонент десериализации по умолчанию LinkedHashMap, но почему он не принимает мой TestDto в качестве компонента десериализации.

ДжерсиВерсия: 2.0.1 com.fasterxml.jackson.core: 2.9.0

...