json jaxb wso2 jax-rs wso2as

Marshalling/Unmarshalling java.util.Date to Json in jax rs



jaxb wso2 (1)

Estoy usando jaxb y el adaptador de fecha. Pero la respuesta no contiene la fecha.

@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; } }

Y a continuación está mi clase de adaptador,

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); } }

Cuando llamo al servicio resful a través de un cliente de descanso lo que obtengo es lo siguiente,

{"project":{"projectId":1,"projectName":"testProject","userId":1}}

No contiene la fecha. ¿Que me estoy perdiendo aqui?

ACTUALIZAR:

Implementé esto en el servidor de aplicaciones WSO2 en el entorno CXF. Y a continuación está la definición del método expuesto al servicio,

@GET @Path("{userId}/{projectName}") @Produces("application/json") public Project getProjectByUser(@PathParam("userId") long userId, @PathParam("projectName") String projectName) throws IOException;


¿Has intentado anotar el atributo en lugar del método?

@XmlElement(name = "createdDate") @XmlJavaTypeAdapter(value = DateAdapter.class, type = Date.class) private Date createdDate;

Lo probé en Wildfly 8 y funcionó bien.