Hello,
We're using CXF version 2.6.1 and I noticed where returning results in an
order that doesn't match the order in which our properties were defined in
the source Java object.
For example, our Java object has the following properties :
private String trustedPartnerLogId;
private ModuleLogEnum module;
private OperationLogEnum operation;
private Long trustedPartnerId;
private String customerId;
private String sessionId;
private String dateCreated;
But the JSON output from the webservice call to CXF generates this :
"operation": "TPO_PAGE_SESSION_CLOSE",
"sessionId": "wf56m3mnxhch",
"dateCreated": "2012-06-11T18:09:24.527935-04:00",
"trustedPartnerId": 1014582732321112322,
"customerId": "9876500005",
"relatedAsset": null,
"trustedPartnerLogId": "10fca7fb-d887-64b7-d63b-3315be395118",
"module": "TPM_BOOK",
The relevant code is shown below.
Any idea what I missed ? Is there a config setting that I can use to
control the element order ?
Regards,
Danny
public Response searchLogs(HttpServletRequest request, String tpID, Boolean
returnResults,
String groupBy, MeasureEnum measure, FilterTrustedPartnerLogs filter,
PortalPageVO page)
{
ResponseBuilder builder = ServiceUtils.toErrorResponse(request,
ErrorCodesEnum.UNABLE_TO_SEARCH_LOGS);
if ((page == null) || (page!=null && page.getLimit() == 0)) {
builder = ServiceUtils.toErrorResponse(request,
ErrorCodesEnum.REQUEST_LIMIT_MUST_BE_SPECIFIED);
} else if ((filter == null || StringUtils.isEmpty(filter.getStartDate())
|| StringUtils.isEmpty(filter.getEndDate()))) {
builder = ServiceUtils.toErrorResponse(request,
ErrorCodesEnum.STARTDATE_AND_ENDDATE_MUST_BE_SPECIFIED);
} else {
try {
filter.setTrustedPartnerId(Long.valueOf(tpID));
builder = Response.ok().entity(this.analyticsManager.searchLogs(filter,
page, returnResults, groupBy, measure));
} catch (Exception e) {
this.emailUtils.createEmailThenSend("AnalyticsWebservicesManager",
"searchLogs", tpID, null, e);
}
}
return builder.build();
}