[ 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)