[ https://issues.apache.org/jira/browse/OLINGO-1577?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17632453#comment-17632453 ]
Florian Kolbe commented on OLINGO-1577: --------------------------------------- Thanks! Here on apache.org - I cannot seem to vote (not eligible?) Or did you want me to vote for the PR? (could not find a place to vote there) > NullPointerException in JsonODataErrorDeserializer (on empty response body?) > ---------------------------------------------------------------------------- > > Key: OLINGO-1577 > URL: https://issues.apache.org/jira/browse/OLINGO-1577 > Project: Olingo > Issue Type: Bug > Components: odata4-client > Affects Versions: (Java) V4 4.7.1 > Reporter: Florian Kolbe > Priority: Major > Time Spent: 10m > Remaining Estimate: 0h > > {noformat} > 2022-07-15T11:05:15,678 WARN [mock-1] header.ODataErrorResponseChecker:76 > Error deserializing error response > java.lang.NullPointerException: null > at > org.apache.olingo.client.core.serialization.JsonODataErrorDeserializer.doDeserialize(JsonODataErrorDeserializer.java:46) > ~[odata-client-core-4.7.1.jar:?] > at > org.apache.olingo.client.core.serialization.JsonDeserializer.toError(JsonDeserializer.java:442) > ~[odata-client-core-4.7.1.jar:?] > at > org.apache.olingo.client.core.serialization.ClientODataDeserializerImpl.toError(ClientODataDeserializerImpl.java:105) > ~[odata-client-core-4.7.1.jar:?] > at > org.apache.olingo.client.core.serialization.ODataReaderImpl.readError(ODataReaderImpl.java:86) > ~[odata-client-core-4.7.1.jar:?] > at > org.apache.olingo.client.core.communication.header.ODataErrorResponseChecker.checkResponse(ODataErrorResponseChecker.java:64) > [odata-client-core-4.7.1.jar:?] > at > org.apache.olingo.client.core.communication.request.AbstractRequest.checkResponse(AbstractRequest.java:58) > [odata-client-core-4.7.1.jar:?] > at > org.apache.olingo.client.core.communication.request.AbstractODataRequest.doExecute(AbstractODataRequest.java:316) > [odata-client-core-4.7.1.jar:?] > at > org.apache.olingo.client.core.communication.request.retrieve.ODataEntitySetRequestImpl.execute(ODataEntitySetRequestImpl.java:61) > [odata-client-core-4.7.1.jar:?] > at > org.apache.olingo.client.core.communication.request.retrieve.ODataEntitySetRequestImpl.execute(ODataEntitySetRequestImpl.java:39) > [odata-client-core-4.7.1.jar:?] > at > ... > {noformat} > {noformat} > [org.apache.olingo.client.api.communication.ODataClientErrorException: (401) > Unauthorized [HTTP/1.1 401 Unauthorized]], oDataError > {"code":"401","message":"Unauthorized","target":null,"details":null,"innerError":null} > {noformat} > Offending line in > org.apache.olingo.client.core.serialization.JsonODataErrorDeserializer.doDeserialize(JsonParser) > is > {noformat} > if (tree.has(Constants.JSON_ERROR)) { > {noformat} > in > {noformat} > protected ODataError doDeserialize(final JsonParser parser) throws > IOException { > final ODataError error = new ODataError(); > final ObjectNode tree = parser.getCodec().readTree(parser); > if (tree.has(Constants.JSON_ERROR)) { > final JsonNode errorNode = tree.get(Constants.JSON_ERROR); > {noformat} > so apparently readTree() returns null (which should valid). > Here > {noformat} > org.apache.olingo.client.core.communication.request.AbstractRequest.checkResponse(ODataClient, > HttpResponse, String) > {noformat} > {noformat} > protected void checkResponse( > final ODataClient odataClient, final HttpResponse response, final > String accept) { > if (response.getStatusLine().getStatusCode() >= 400) { > Header contentTypeHeader = response.getEntity() != null ? > response.getEntity().getContentType() : null; > try { > final ODataRuntimeException exception = > ODataErrorResponseChecker.checkResponse( > odataClient, > response.getStatusLine(), > response.getEntity() == null ? null : > response.getEntity().getContent(), > (contentTypeHeader != null && > contentTypeHeader.getValue().contains(TEXT_CONTENT_TYPE)) > ? TEXT_CONTENT_TYPE : accept); > {noformat} > {noformat} > org.apache.olingo.client.core.communication.header.ODataErrorResponseChecker.checkResponse(ODataClient, > StatusLine, InputStream, String) > {noformat} > guesses to content type to be JSON and then > {noformat} > JsonODataErrorDeserializer > {noformat} > simply stumbles over an empty body (my assumption). > Going by the current source code 4.10 would also be affected (unless anything > in the caller would have changed). > https://github.com/apache/olingo-odata4/blob/master/lib/client-core/src/main/java/org/apache/olingo/client/core/serialization/JsonODataErrorDeserializer.java > -- This message was sent by Atlassian Jira (v8.20.10#820010)