[
https://issues.apache.org/jira/browse/FC-258?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16695974#comment-16695974
]
Shawn McKinney commented on FC-258:
-----------------------------------
Here's what I ended up with.
case HTTP_401_UNAUTHORIZED :
error = generateErrorMessage( uri, function, "401 function
unauthorized on host" );
LOG.error( error );
throw new RestException(
GlobalErrIds.REST_UNAUTHORIZED_ERR, error );
case HTTP_403_FORBIDDEN :
error = generateErrorMessage( uri, function, "403 function
forbidden on host" );
LOG.error( error );
throw new RestException( GlobalErrIds.REST_FORBIDDEN_ERR,
error );
case HTTP_404_NOT_FOUND:
case HTTP_500_INTERNAL_SERVER_ERROR:
case HTTP_400_VALIDATION_EXCEPTION:
szResponse = IOUtils.toString(
response.getEntity().getContent(), "UTF-8" );
if( StringUtils.isNotEmpty( szResponse ) )
{
LOG.debug( "post uri=[{}], function=[{}],
response=[{}]", uri, function, szResponse );
}
else
{
error = generateErrorMessage( uri, function, "HTTP
Error:" + response.getStatusLine().getStatusCode());
LOG.error( error );
throw new RestException(
GlobalErrIds.REST_NOT_FOUND_ERR, error );
}
break;
> Updating the way FortResponse is served
> ---------------------------------------
>
> Key: FC-258
> URL: https://issues.apache.org/jira/browse/FC-258
> Project: FORTRESS
> Issue Type: Bug
> Reporter: Kiran Ayyagari
> Assignee: Kiran Ayyagari
> Priority: Major
>
> The FortResponse instance created as a result of operation exception is still
> sent to the client with a HTTP status code of "200 OK" forcing clients to
> rely on the {{errorCode}} field to figure out the actual status of the
> operation.
> For example when the below request is sent to a stock Fortress REST service
> {code}
> curl -POST http://localhost:7070/fortress-rest/userAdd --header
> "Content-Type: application/json" --header "Accept: application/json" --header
> "Authorization: Basic dGVzdDpwYXNzd29yZA==" -v -d '{ "entity": { "fqcn":
> "org.apache.directory.fortress.core.model.User", "userId": "test1", "ou":
> "non-existing-ou" }, "contextId": "HOME" }'
> {code}
> the below success response is received though the request was failed due to a
> validation error which ideally should have been responded with a "400 bad
> request" error.
> {code}
> * Trying ::1...
> * TCP_NODELAY set
> * Connected to localhost (::1) port 7070 (#0)
> > POST /fortress-rest/userAdd HTTP/1.1
> > Host: localhost:7070
> > User-Agent: curl/7.54.0
> > Content-Type: application/json
> > Accept: application/json
> > Authorization: Basic dGVzdDpwYXNzd29yZA==
> > Content-Length: 138
> >
> * upload completely sent off: 138 out of 138 bytes
> < HTTP/1.1 200
> < Date: Fri, 16 Nov 2018 15:05:04 GMT
> < Content-Type: application/json
> < Transfer-Encoding: chunked
> <
> * Connection #0 to host localhost left intact
> {"errorCode":1035,"isAuthorized":null,"errorMessage":"validate detected
> invalid orgUnit name [non-existing-ou] adding user with userId
> [test1]","entity":null,"entities":null,"values":null,"valueSet":null,"session":null}
> {code}
> I propose to add a new {{httpStatusCode}} field to FortResponse class which
> can be set appropriately and modify/add the CXF interceptor to change the
> outgoing response's status accordingly.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)