[
https://issues.apache.org/jira/browse/CMIS-816?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14042244#comment-14042244
]
Florian Müller commented on CMIS-816:
-------------------------------------
The CMIS spec defines the same HTTP status codes for a few CMIS exceptions. For
example, constraint, contentAlreadyExists, nameConstraintViolation,
updateConflict, and versioning share the HTTP status code 409.
The Browser binding also provides the exception name and therefore can be
unambiguously mapped to a Java exception. Unfortunately, the AtomPub binding
doesn't provide any additional hint. The OpenCMIS server sends the exception
name in the body and clients that understand this hint (OpenCMIS, DotCMIS,...)
can throw the right exception. That's not in the spec and only in the code.
The OpenCMIS clients don't rely on this hint and fall back to the next generic
exception, if the hint is not present. (For status code 409 this a constraint
exception.)
If you would send a different body, this hint would be lost and AtomPub clients
don't get fine grained exceptions anymore. If that's a big deal depends on the
client application.
The service wrappers let you intercept almost everything, in a binding agnostic
way. You control what is going in and your control what is going out. They have
been introduced to customize the server behavior.
Technically, the AtomPub and JSON exception bodies can also be overridden in a
service wrapper. But since it never was the intention of the service wrappers
to do something binding specific, that requires a bit more code.
i18n support is a different discussion. It's virtually impossible to add that
without built-in support in the OpenCMIS. If you have use case for that, please
open another issue.
> Allow custom error handling in the AtomPub and Browser bindings
> ---------------------------------------------------------------
>
> Key: CMIS-816
> URL: https://issues.apache.org/jira/browse/CMIS-816
> Project: Chemistry
> Issue Type: Improvement
> Components: opencmis-server
> Affects Versions: OpenCMIS 0.11.0
> Reporter: Carlo Sciolla
> Priority: Critical
> Attachments: protected-error-handling.patch
>
>
> The AtomPub and Browser bindings servlets implement exception handling
> through private methods which are thus not extensible by end users.
> This effectively inhibit fine grained control over error reporting, logging
> or contents of the error messages.
--
This message was sent by Atlassian JIRA
(v6.2#6252)