Jersey: @Consumes não funciona muito quando o tipo de conteúdo não está definido
Estou tentando descobrir como o @Consumes funciona aqui.
Eu tenho um recurso simplificado que se parece com o abaixo, e eu só quero esse recurso para consumir "application / vnd.myApp + xml".
@Path("/app")
@Consumes("application/vnd.myApp+xml")
@Produces("application/vnd.myApp+xml")
public class AppResource {
@POST
public Response postStuff() {
...
}
}
Eu tenho os seguintes testcases: -
public class AppResourceTest extends JerseyTest {
@Test
public void testApp() {
// #1: Works fine
ClientResponse response = resource().path("app")
.accept("application/vnd.myApp+xml")
.post(ClientResponse.class);
...
// #2: Throws a 415 Unsupported Media Type
ClientResponse response = resource().path("app")
.accept("application/vnd.myApp+xml")
.type("text/plain")
.post(ClientResponse.class);
...
// #3: Works fine
ClientResponse response = resource().path("app")
.accept("application/vnd.myApp+xml")
.type("application/vnd.myApp+xml")
.post(ClientResponse.class);
...
}
}
Dos 3 testes acima, # 2 e # 3 funcionam como esperado.
Quanto ao # 1, se eu não definir o tipo de conteúdo, por que ele não joga um 415 também?