You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@wink.apache.org by "Nadav Fischer (JIRA)" <ji...@apache.org> on 2009/07/09 13:55:14 UTC
[jira] Reopened: (WINK-53) MessageBodyReader.isReadable methods
should do straight ==
[ https://issues.apache.org/jira/browse/WINK-53?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nadav Fischer reopened WINK-53:
-------------------------------
You're completely right that the previous implementation was incorrect, but after re-thinking this, I think that we are missing some functionality by using the == (thanks go to Eli Baram for pointing this out)
Consider this scenario:
Given the following class hierarchy, where B inherits from A, and C and D inherit from B:
{noformat}
A
|-B
|-C
|-D
{noformat}
and a Provider for class B (let's call it BProvider :-)), if we simply use == for the isReadable, then BProvider will not be picked up for an entity of type A (assuming the media type is not the issue), even though it shouldn't be a problem.
I think that what we want to do is reverse the order of classes in the isAssignableFrom invocation in isReadable so that C and D entities won't be picked up, but A will be, like so:
instead of this
{code}
return type != null && InputStream.class.isAssignableFrom(type);
{code}
do this
{code}
return type != null && type.isAssignableFrom(InputStream.class);
{code}
What do you think?
> MessageBodyReader.isReadable methods should do straight ==
> ----------------------------------------------------------
>
> Key: WINK-53
> URL: https://issues.apache.org/jira/browse/WINK-53
> Project: Wink
> Issue Type: Bug
> Components: Common
> Affects Versions: 0.1
> Reporter: Bryant Luk
> Assignee: Bryant Luk
> Priority: Minor
> Fix For: 0.1
>
> Attachments: WINK-53.patch
>
>
> In some cases the built in MessageBodyReaders providers's isReadable method does an isAssignableFrom. This should just be a straight == instead.
> For instance in InputStreamProvider:
> public boolean isReadable(Class<?> type, Type genericType, Annotation[] ann
> MediaType mediaType) {
> - return type != null && InputStream.class.isAssignableFrom(type);
> + return type != null && InputStream.class == type;
> }
> If the method parameter were:
> @GET
> public void getMethod(FileInputStream fis) {
> }
> we get a 500 back (because I think the injection throws) instead of a 415. I can fix this up.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.