You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Philippe Larouche (JIRA)" <ji...@apache.org> on 2014/08/13 16:13:15 UTC

[jira] [Comment Edited] (CXF-5795) Reading the entity from a Response with 202 - Accepted causes NullPointerException

    [ https://issues.apache.org/jira/browse/CXF-5795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14095477#comment-14095477 ] 

Philippe Larouche edited comment on CXF-5795 at 8/13/14 2:13 PM:
-----------------------------------------------------------------

Hi Sergey,

I confirm I can read the data with the HttpURLConnection.  Here is how I called the WS, please note that I'm using a post call (I think it's not working neither when using get):

            ObjectMapper mapper = new ObjectMapper();
	    String jsonLot = mapper.writeValueAsString(lot);
	    
	    // Connect to google.com
	    URL url = new URL("http://localhost:9000/api/encaissement/1.0/creerlot");
	    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
	    connection.setDoOutput(true);
	    connection.setRequestMethod("POST");
	    connection.setRequestProperty("Content-Type", "application/json");
	    connection.setRequestProperty("Content-Length",  String.valueOf(jsonLot.length()));
	     
	    // Write data
	    OutputStream os = connection.getOutputStream();
	    os.write(jsonLot.getBytes());
	     
	    // Read response
	    StringBuilder responseSB = new StringBuilder();
	    BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
	      
	    String line;
	    while ( (line = br.readLine()) != null)
	        responseSB.append(line);
	             
	    // Close streams
	    br.close(); 
	    os.close();

At the end, responseSB contains the expected json string.


was (Author: plarouche):
Hi Sergey,

I confirm I can read the data with the HttpURLConnection.  Here is how I called the WS, please note that I'm using a post call (I think it's working when using get):

            ObjectMapper mapper = new ObjectMapper();
	    String jsonLot = mapper.writeValueAsString(lot);
	    
	    // Connect to google.com
	    URL url = new URL("http://localhost:9000/api/encaissement/1.0/creerlot");
	    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
	    connection.setDoOutput(true);
	    connection.setRequestMethod("POST");
	    connection.setRequestProperty("Content-Type", "application/json");
	    connection.setRequestProperty("Content-Length",  String.valueOf(jsonLot.length()));
	     
	    // Write data
	    OutputStream os = connection.getOutputStream();
	    os.write(jsonLot.getBytes());
	     
	    // Read response
	    StringBuilder responseSB = new StringBuilder();
	    BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
	      
	    String line;
	    while ( (line = br.readLine()) != null)
	        responseSB.append(line);
	             
	    // Close streams
	    br.close(); 
	    os.close();

At the end, responseSB contains the expected json string.

> Reading the entity from a Response with 202 - Accepted causes NullPointerException
> ----------------------------------------------------------------------------------
>
>                 Key: CXF-5795
>                 URL: https://issues.apache.org/jira/browse/CXF-5795
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 2.7.11
>         Environment: Apache CXF 2.7.11
>            Reporter: Daniel Peder Dahlsveen
>            Assignee: Sergey Beryozkin
>             Fix For: 2.7.12, 3.0.1
>
>
> The entity of a Response with HTTP status code 202 - Accepted is null. This causes a NullPointerException when calling response.readEntity(). Furthermore, this bug seems to only occur when using the JAXRSClientFactory, and it was introduced in CXF 2.7.11.
> The stacktrace is of the NullPointerException:
> java.lang.NullPointerException
> 	at org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:345)
> 	at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:286)
> 	at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:276)
> To recreate the bug do the following:
> Create a REST service that returns a 202 - Accepted with a non-null entity. In our case, the service was for HTTP POST.
> Create a unit test that tests the service by creating a client with the JAXRSClientFactory and then reads the entity from the response. 
> Both return Response.accepted(entity).build(); and return Response.status(Response.Status.ACCEPTED).entity(entity).build(); causes the bug.



--
This message was sent by Atlassian JIRA
(v6.2#6252)