[
https://issues.apache.org/jira/browse/TOMEE-2693?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kean Erickson updated TOMEE-2693:
---------------------------------
Description:
In the code below, the line "for (String s : stuffs)" creates an NPE, but the
problem is that the response is sent back with as a 200 and a clipped body..
which is simply "[{". It stopped generating the response body when the property
getter method was hit. A non-200 series code should be sent.
This error is shown in log when this happens:
24-Sep-2019 16:42:53.779 SEVERE [ouc5]
org.apache.cxf.jaxrs.utils.JAXRSUtils.logMessageHandlerProblem Problem with
writing the data, class java.util.ArrayList, ContentType: application/json
Workaround: fix the NPE
My resource:
{code:java}
@GET
@ApiOperation(value = "Get stuff")
@Produces(MediaType.APPLICATION_JSON)
public List<TestDO> list(@Context HttpServletResponse response) {
TestDO stuff = new TestDO();
stuff.setId(1);
List<TestDO> things = new ArrayList<>();
things.add(stuff);
return things;
}{code}
My data object:
{code:java}
@XmlRootElement(name = "Test")
@XmlAccessorType(XmlAccessType.FIELD)
@ApiModel(value = "Test", description = "Test object")
public class TestDO {
private int id;
private List<String> stuffs = null;
/**
* Empty constructor, required by JAXB.
*/
public TestDO() {
}
public TestDO(int id, String stuffs) {
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public List<String> getStuffs() {
for (String s : stuffs)
System.out.println(s);
return stuffs;
}
public void setStuffs(List<String> stuffs) {
this.stuffs = null;
}
}
{code}
was:
In the code below, the line "for (String s : stuffs)" creates an NPE, but the
problem is that the response is sent back with as a 200 and a clipped body..
which is simply "[{". It stopped generating the response body when the property
getter method was hit. A non-200 series code should be sent.
This error is shown in log when this happens:
24-Sep-2019 16:42:53.779 SEVERE [ouc5]
org.apache.cxf.jaxrs.utils.JAXRSUtils.logMessageHandlerProblem Problem with
writing the data, class java.util.ArrayList, ContentType: application/json
Workaround: fix the NPE
My resource:
{code:java}
@GET
@ApiOperation(value = "Get stuff")
@Produces(MediaType.APPLICATION_JSON)
public List<TestDO> list(@Context HttpServletResponse response) {
TestDO stuff = new TestDO();
stuff.setId(1);
List<TestDO> things = new ArrayList<>();
things.add(stuff);
return things;
}{code}
{code:java}
@XmlRootElement(name = "Test")
@XmlAccessorType(XmlAccessType.FIELD)
@ApiModel(value = "Test", description = "Test object")
public class TestDO {
private int id;
private List<String> stuffs = null;
/**
* Empty constructor, required by JAXB.
*/
public TestDO() {
}
public TestDO(int id, String stuffs) {
this.id = id;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public List<String> getStuffs() {
for (String s : stuffs)
System.out.println(s);
return stuffs;
}
public void setStuffs(List<String> stuffs) {
this.stuffs = null;
}
}
{code}
> When there is an exception during JAXB marshaling, an incomplete response is
> sent with a 200 code
> -------------------------------------------------------------------------------------------------
>
> Key: TOMEE-2693
> URL: https://issues.apache.org/jira/browse/TOMEE-2693
> Project: TomEE
> Issue Type: Bug
> Components: TomEE Build
> Affects Versions: 7.1.1
> Reporter: Kean Erickson
> Priority: Minor
>
> In the code below, the line "for (String s : stuffs)" creates an NPE, but the
> problem is that the response is sent back with as a 200 and a clipped body..
> which is simply "[{". It stopped generating the response body when the
> property getter method was hit. A non-200 series code should be sent.
> This error is shown in log when this happens:
> 24-Sep-2019 16:42:53.779 SEVERE [ouc5]
> org.apache.cxf.jaxrs.utils.JAXRSUtils.logMessageHandlerProblem Problem with
> writing the data, class java.util.ArrayList, ContentType: application/json
> Workaround: fix the NPE
> My resource:
> {code:java}
> @GET
> @ApiOperation(value = "Get stuff")
> @Produces(MediaType.APPLICATION_JSON)
> public List<TestDO> list(@Context HttpServletResponse response) {
> TestDO stuff = new TestDO();
> stuff.setId(1);
> List<TestDO> things = new ArrayList<>();
> things.add(stuff);
> return things;
> }{code}
>
> My data object:
> {code:java}
> @XmlRootElement(name = "Test")
> @XmlAccessorType(XmlAccessType.FIELD)
> @ApiModel(value = "Test", description = "Test object")
> public class TestDO {
> private int id;
> private List<String> stuffs = null;
> /**
> * Empty constructor, required by JAXB.
> */
> public TestDO() {
> }
> public TestDO(int id, String stuffs) {
> this.id = id;
> }
> public int getId() {
> return id;
> }
> public void setId(int id) {
> this.id = id;
> }
> public List<String> getStuffs() {
> for (String s : stuffs)
> System.out.println(s);
> return stuffs;
> }
> public void setStuffs(List<String> stuffs) {
> this.stuffs = null;
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)