[
https://issues.jboss.org/browse/TEIID-3471?page=com.atlassian.jira.plugin...
]
Ron Sigal commented on TEIID-3471:
----------------------------------
Hi Ramesh,
Ok, I see that
{code}
@Path("utf8")
@Produces("text/plain;charset=utf-8")
@POST
public String utf8()
{
System.out.println("TestResource.utf8()");
return "ok";
}
...
@Test
public void testAcceptNoUtf8() throws Exception
{
ClientRequest request = new
ClientRequest("http://localhost:8081/utf8/");
request.accept("text/plain");
ClientResponse<?> response = request.post();
Assert.assertEquals(200, response.getStatus());
String entity = response.getEntity(String.class);
System.out.println("result: " + entity);
}
{code}
results in
org.jboss.resteasy.spi.NotAcceptableException: RESTEASY001530: No match for accept
header
whereas
{code}
@Path("nocharset")
@Produces("text/plain")
@POST
public String noCharset()
{
return "ok";
}
...
@Test
public void testAcceptUtf8No() throws Exception
{
ClientRequest request = new
ClientRequest("http://localhost:8081/nocharset/");
request.accept("text/plain;charset=utf-8");
ClientResponse<?> response = request.post();
Assert.assertEquals(200, response.getStatus());
String entity = response.getEntity(String.class);
System.out.println("result: " + entity);
}
{code}
works fine. The relevant code is
{code}
@Override
public boolean isCompatible(MediaType other)
{
boolean result;
if (other == null)
result = false;
if (getType().equals(MEDIA_TYPE_WILDCARD) ||
other.getType().equals(MEDIA_TYPE_WILDCARD))
result = true;
else if (getType().equalsIgnoreCase(other.getType()) &&
(getSubtype().equals(MEDIA_TYPE_WILDCARD) ||
other.getSubtype().equals(MEDIA_TYPE_WILDCARD)))
result = true;
else
{
if (getType().equalsIgnoreCase(other.getType())
&& this.getSubtype().equalsIgnoreCase(other.getSubtype()))
{
if (getParameters() == null || getParameters().size() == 0)
{
result = true;
}
else
{
result = this.equals(other);
}
}
else
{
result = false;
}
}
return result;
}
{code}
in org.jboss.resteasy.util.WeightedMediaType in the resteasy-jaxrs module.
Very interesting. Honestly, I'm not sure how to think about this. The JAX-RS 1.1 spec
says "An implementation MUST NOT invoke a method whose effective value of @Produces
does not match the request Accept header.", but I don't see where it ever
actually defines "match". And Resteasy passes the TCK tests. Really, I'm not
even sure what "match" SHOULD mean. We could get crazy and do full blown
unification (
http://en.wikipedia.org/wiki/Unification_%28computer_science%29). Ugh.
Resource matching is a very fundamental notion in JAX-RS, and I wouldn't want to make
any changes without being very careful.
Any thoughts about how to interpret "match"?
-Ron
unable to consume odata service deployed in teiid
-------------------------------------------------
Key: TEIID-3471
URL:
https://issues.jboss.org/browse/TEIID-3471
Project: Teiid
Issue Type: Bug
Components: OData
Affects Versions: 8.7
Reporter: Mark Drilling
Assignee: Ramesh Reddy
Attachments: deployment-exception.txt, MyVDB-vdb.xml, standalone-snippet.xml
I am unable to consume odata service created in teiid.
Steps to reproduce and files are attached.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)