Reputation: 2847
I have a RESTful service with some methods. Methods are annotated by @POST
and @Consumes(MediaType.APPLICATION_JSON)
.
I have wrapper for request parameters:
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class RequestWrapper {
@XmlElement
private SomeInfo someInfo = new SomeInfo();
@XmlElement
@XmlElementWrapper
private List<RequestParameter> requestParameters = new ArrayList<>();
}
public class SomeInfo {
public String field1;
public String field2;
}
public class RequestParameter {
public String key;
public String value;
}
I make request to my service. Body of the POST message:
{"someInfo":{"field1":"b","field2":"c"},"requestParameters":[{"key":"1","value":"2"},{"key":"3","value":"4"}]}
I see that someInfo
values processed and accesible via RequestWrapper. But List<RequestParameter> requestParameters
has zero length.
What should I do to messages been processed normally?
P.S. I use Glassfish 4.0. Dependencies of the maven module:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-processing</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet-core</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
Upvotes: 1
Views: 415
Reputation: 2847
omg, I have found magic bullet
Delete @XmlAccessorType(XmlAccessType.FIELD)
Delete @XmlElementWrapper
make public getters/setters for each field
@XmlRootElement
public class RequestWrapper {
@XmlElement
private SomeInfo someInfo = new SomeInfo();
@XmlElement
private List<RequestParameter> requestParameters = new ArrayList<>();
// getters/setters for each field
}
Upvotes: 2