[
https://issues.apache.org/jira/browse/WINK-234?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mike Rheinheimer closed WINK-234.
---------------------------------
> improve debug and return code for unfound writer
> ------------------------------------------------
>
> Key: WINK-234
> URL: https://issues.apache.org/jira/browse/WINK-234
> Project: Wink
> Issue Type: Improvement
> Components: Common, Server
> Affects Versions: 1.1
> Reporter: Mike Rheinheimer
> Fix For: 1.1
>
> Attachments: WINK-234.patch
>
>
> Recently a user got an NPE on the server side when he had inadvertently
> forgotten to package the jettison provider with the DefectAsset sample. The
> NPE:
> java.lang.NullPointerException
> at
> org.apache.wink.common.internal.providers.entity.atom.AtomEntrySyndEntryProvider.writeTo(AtomEntrySyndEntryProvider.java:96)
> This was due, of course, to not being able to find a provider to handler
> DefectAsset to json data transformation. This problem could have been
> prevented in one of two ways:
> 1) the isWriteable method in AtomEntrySyndEntryProvider could have checked
> for a writer and returned false when one was not found, or
> 2) the writeTo method in AtomEntrySyndEntryProvider could have detected a
> null return from providers.getMessageBodyWriter, and responded with some
> debug output and a 500 response code.
> As it is now, a user would have to inspect source code to determine the
> possible cause of the NPE. In poking around at the various providers we have
> in Wink, I see both strategies employed. Do we want to establish some
> consistency on this? If so, which is the most appropriate? My understanding
> is that we want isWriteable to be as fast as possible, so perhaps #2 makes
> the most sense for performance. For usability, however, we should never even
> call writeTo if isWriteable doesn't pass, so perhaps #1 is best.
> Besides the isWriteable and writeTo problem, I did not see any such detection
> or debug output in any of the isReadable and readFrom methods in the various
> providers. I think we should do the same in these areas? Any opinions?
> See the following provider that prompted the original user's question:
> org.apache.wink.common.internal.providers.entity.atom.AtomEntrySyndEntryProvider
> See this provider that detects null in the isWriteable method:
> org.apache.wink.common.internal.providers.entity.app.CategoriesProvider
> See this provider for an example of outputting debug and explicitly returning
> 500 http code:
> org.apache.wink.common.internal.model.AnyContentHandler
> I'll be glad to go through and adjust the providers once we reach a consensus
> on this Jira.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.