Marshalling/Unmarshalling java.util. Дата для Json в jax rs
Я использую jaxb и адаптер даты. Но ответ не содержит дату.
@XmlRootElement(name = "project")
public class Project implements Serializable {
private static final long serialVersionUID = -6462790408417409266L;
private long projectId;
private long userId;
private String projectName;
private Date createdDate;
private Date lastUpdatedDate;
public final long getProjectId() {
return projectId;
}
public final void setProjectId(final long projectId) {
this.projectId = projectId;
}
public final long getUserId() {
return userId;
}
public final void setUserId(long userId) {
this.userId = userId;
}
public final String getProjectName() {
return projectName;
}
public final void setProjectName(final String projectName) {
this.projectName = projectName;
}
/**
* @return the createdDate
*/
@XmlElement(name = "createdDate")
@XmlJavaTypeAdapter(value = DateAdapter.class, type = Date.class)
public final Date getCreatedDate() {
return createdDate;
}
/**
* @param createdDate
* the createdDate to set
*/
public final void setCreatedDate(final Date createdDate) {
this.createdDate = createdDate;
}
/**
* @return the lastUpdatedDate
*/
@XmlElement(name = "lastUpdatedDate")
@XmlJavaTypeAdapter(value = DateAdapter.class, type = Date.class)
public final Date getLastUpdatedDate() {
return lastUpdatedDate;
}
/**
* @param lastUpdatedDate
* the lastUpdatedDate to set
*/
public final void setLastUpdatedDate(final Date lastUpdatedDate) {
this.lastUpdatedDate = lastUpdatedDate;
}
}
И следующий мой класс Адаптер,
public class DateAdapter extends XmlAdapter<String, Date> {
private final SimpleDateFormat dateFormat = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ss");
@Override
public String marshal(Date v) throws Exception {
return dateFormat.format(v);
}
@Override
public Date unmarshal(String v) throws Exception {
return dateFormat.parse(v);
}
}
Когда я вызываю Resful Service через клиент отдыха, я получаю следующее:
{"project":{"projectId":1,"projectName":"testProject","userId":1}}
Не содержит дату. Что мне здесь не хватает?
ОБНОВИТЬ:
Я развернул это на сервере приложений WSO2 в среде CXF. И следующее - это определение метода, предоставляемого сервисом,
@GET
@Path("{userId}/{projectName}")
@Produces("application/json")
public Project getProjectByUser(@PathParam("userId") long userId,
@PathParam("projectName") String projectName) throws IOException;
1 ответ
Вы пытались аннотировать атрибут вместо метода:
@XmlElement(name = "createdDate")
@XmlJavaTypeAdapter(value = DateAdapter.class, type = Date.class)
private Date createdDate;
Я пробовал в Wildfly 8, и он работал нормально.