невозможно найти MessageBodyReader - PullRequest
6 голосов
/ 11 марта 2010

У меня есть этот интерфейс:

 @Path("inbox")
public interface InboxQueryResourceTest {

    @POST
    @Path("{membershipExternalId}/query")
    @Consumes(MediaType.APPLICATION_XML)
    @Produces("multipart/mixed")
    public MultipartOutput query(@PathParam("membershipExternalId") final String membershipExternalId,
                             @QueryParam("page") @DefaultValue("0") final int page,
                             @QueryParam("pageSize") @DefaultValue("10") final int pageSize,
                             @QueryParam("sortProperty") final List<String> sortPropertyList,
                             @QueryParam("sortReversed") final List<Boolean> sortReversed,
                             @QueryParam("sortType") final List<String> sortTypeString,
                             final InstanceQuery instanceQuery) throws IOException;
}

Я реализовал метод для возврата MultipartOutput. Я отправляю xml-запрос от Fiddler и получаю результат без проблем.

НО я сделал интеграционный тест для того же интерфейса, я отправил те же объекты и поставил ответ как:

final MultipartOutput multiPartOutput = getClient().query(getUserRestAuth(), 0, 25, null, null, null, instanceQuery);

Но вот, поэтому из интеграционных тестов я получаю странную ошибку:

Невозможно найти MessageBodyReader типа содержимого multipart / mixed; border = "74c5b6b4-e820-452d-abea-4c56ffb514bb" и тип класса org.jboss.resteasy.plugins.providers.multipart.MultipartOutput

У кого-нибудь есть идеи, почему только в интеграционных тестах я получаю эту ошибку?

PS: Некоторые из вас скажут, что я не отправляю application / xml как ContentType, а multipart, что, конечно, ложно, потому что объекты помечены требуемым @XmlRootElement и т. Д., Иначе ни POST от Fiddler не будет работать.

Ответы [ 3 ]

1 голос
/ 09 апреля 2012

Вы можете попробовать это:

ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance();
providerFactory.registerProvider(org.jboss.resteasy.plugins.providers.multipart.MimeMultipartProvider.class);
0 голосов
/ 24 марта 2010

Включает ли в classpath соответствующее дополнение resteasy для многочастного кодирования? (Esteasy-многочастному-провайдер).

0 голосов
/ 12 марта 2010

Попробуйте добавить этот метод в свой тестовый класс. Это позволит зарегистрировать встроенных поставщиков по умолчанию, которые уже зарегистрированы на вашем сервере.

@BeforeClass
public static void registerProviders() {
    ResteasyProviderFactory providerFactory = ResteasyProviderFactory.getInstance();
    RegisterBuiltin.register(providerFactory);
}
...