AnsweredAssumed Answered

Alfresco Freemarker restApi - Json error

Question asked by serzarat on Dec 2, 2014
Latest reply on Dec 2, 2014 by angelborroy
Buenos días,
Probando a utilizar  la freemarker restAPI para sobrepasar problemas como el limite de 1000 elementos en mi versión de alfresco (v3), en ocasiones al realizar el parseo del objeto json que obtengo como respuesta, obtengo el siguiente error:

"name": "{    "code" : "500",
     "message": "10210107 Wrapped Exception (with status template): 10211551 Error durante el procesamiento de la plantilla 'Expression comisionesrow is undefined on line 7, column 44 in abc\/queryresults.get.json.ftl.'. Por favor, contacte con el administrador del sistema."
}
   at net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:505)
   at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1271)
   at net.sf.json.JSONObject.fromObject(JSONObject.java:155)
   at net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:347)
   at net.sf.json.JSONArray._fromJSONTokener(JSONArray.java:1132)
   at net.sf.json.JSONArray.fromObject(JSONArray.java:125)
   at net.sf.json.util.JSONTokener.nextValue(JSONTokener.java:350)
   at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:1180)
   at net.sf.json.JSONObject._fromString(JSONObject.java:1373)
   at net.sf.json.JSONObject.fromObject(JSONObject.java:161)
   at net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:139)
   at net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:103)
   at net.sf.json.JSONSerializer.toJSON(JSONSerializer.java:84)
   at com.galeonsoftware.tph.firmadigital.util.AlfrescoDocumentoConsumer.lanzaQueryWS(AlfrescoDocumentoConsumer.java:1420)
   at com.galeonsoftware.tph.firmadigital.util.AlfrescoDocumentoConsumer.lanzaBusquedaWS(AlfrescoDocumentoConsumer.java:1217)
   at com.galeonsoftware.tph.firmadigital.action.expedientes.BusquedaExpedientesAction.executeAction(BusquedaExpedientesAction.java:62)
   at com.galeonsoftware.tph.firmadigital.AdminBaseAction.execute(AdminBaseAction.java:40)
   at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
   at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
   at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
   at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
   at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.extremecomponents.table.filter.AbstractExportFilter.doFilter(AbstractExportFilter.java:49)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at com.galeonsoftware.tph.firmadigital.util.LogFilter.doFilter(LogFilter.java:54)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
   at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:182)
   at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
   at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
   at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
   at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
   at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)



Investigando parece que la plantilla (freemarker template) que nos resulta en la respuesta no ha sido generada correctamente….
Alguien sabe si se debe modificar la plantilla de la ftl  o debería modificar el código?

el json resultado lo obtengo de sete modo:

      InputStream inputStream = connection.getInputStream();

      String jsonTxt = convertStreamToString(inputStream);

                json = (JSONObject) JSONSerializer.toJSON(jsonTxt);

El error viene generado en esta linea:


                JSONArray queryRows = json.getJSONArray("data");

al intentar transformar en array un elemento que viene mal formateado :
"name": "{    "code" : "500",
     "message": "10210107 Wrapped Exception

cuando la plantilla espera otros elementos…

Gracias,




Outcomes