Pessoal estou com um erro no código a seguir “Erro Interno(NPE)”, estou criando um botão em uma tela HTLM5 para visualizar relatório de Ordem de Produção BE, mas estou enfrentando este problema, não sei se é erro de formatação do Json, o inicio do código está correto, estou pegando uma requisição que vem do frontend com alguns parâmetros (Já utilizo esse inicio em outros botões), se alguém tiver alguma sugestão agradeço.
package RelatorioOPBE;
import java.math.BigDecimal;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.sankhya.util.JsonUtils;
import br.com.sankhya.dwf.services.ServiceUtils;
import br.com.sankhya.extensions.actionbutton.AcaoRotinaJava;
import br.com.sankhya.extensions.actionbutton.ContextoAcao;
import br.com.sankhya.jape.EntityFacade;
import br.com.sankhya.jape.core.JapeSession;
import br.com.sankhya.jape.dao.JdbcWrapper;
import br.com.sankhya.modelcore.MGEModelException;
import br.com.sankhya.modelcore.auth.AuthenticationInfo;
import br.com.sankhya.modelcore.facades.VisualizadorRelatoriosSP;
import br.com.sankhya.modelcore.facades.VisualizadorRelatoriosSPHome;
import br.com.sankhya.modelcore.util.EntityFacadeFactory;
import br.com.sankhya.ws.ServiceContext;
import br.com.sankhya.ws.transformer.json.Json2XMLParser;
public class RelatorioBE implements AcaoRotinaJava {
EntityFacade dwfFacade = EntityFacadeFactory.getDWFFacade();
@Override
public void doAction(ContextoAcao contexto) throws Exception {
ServiceContext serviceContext = ServiceContext.getCurrent(); // Contexto do Botão de Ação
JapeSession.SessionHandle hnd = null;
JdbcWrapper jdbc = null;
//Request Body
JsonObject requestBody = serviceContext.getJsonRequestBody();
// Acessando o objeto "javaCall"
JsonObject javaCall = JsonUtils.getJsonObject(requestBody, "javaCall");
//a partir de "javaCall" acesso o objeto "rows"
JsonObject rows = JsonUtils.getJsonObject(javaCall, "rows");
//a partir de "rows" acesso o array "row"
JsonArray row = JsonUtils.getJsonArray(rows, "row");
for (JsonElement jsonElement : row) {
//a partir do elemento obtenho o array "field"
JsonArray fieldArray = JsonUtils.getJsonArray((JsonObject) jsonElement, "field");
//obtenho o primeiro elemento do array
JsonElement fieldName = fieldArray.get(0);
//a partir do elemento obtenho o valor de "$" que é Nro Ordem de Produção
BigDecimal idiproc = JsonUtils.getBigDecimal((JsonObject)fieldName, "$");
fieldName = fieldArray.get(2);
//a partir do elemento obtenho o valor de "$" que é Nro IDIATV
BigDecimal idiatv = JsonUtils.getBigDecimal((JsonObject)fieldName, "$");
hnd = JapeSession.open();
jdbc = dwfFacade.getJdbcWrapper();
jdbc.openSession();
ServiceContext sctx = new ServiceContext(null); // Contexto para Ordem de Produção.
try {
sctx.setAutentication(AuthenticationInfo.getCurrent());
sctx.makeCurrent();
//Vizualizar relatório OP BE
{
String stJson = "{\r\n"
+ " \"requestBody\": {\r\n"
+ " \"relatorio\": {\r\n"
+ " \"nuRfe\": \""+113+"\",\r\n"
+ " \"isApp\": \"N\",\r\n"
+ " \"nuApp\": "+1+",\r\n"
+ " \"parametros\": [],\r\n"
+ " \"parametrosPK\": {\r\n"
+ " \"parametro\": [\r\n"
+ " {\r\n"
+ " \"nome\": \"PK_IDIATV\",\r\n"
+ " \"tipo\": \"I\",\r\n"
+ " \"valor\": \""+idiatv+"\"\r\n"
+ " }\r\n"
+ " ]\r\n"
+ " },\r\n"
+ " \"othersPks\": [\r\n"
+ " {\r\n"
+ " \"pk\": [\r\n"
+ " {\r\n"
+ " \"nome\": \"PK_IDIATV\",\r\n"
+ " \"tipo\": \"I\",\r\n"
+ " \"valor\": "+idiatv+"\r\n"
+ " }\r\n"
+ " ]\r\n"
+ " }\r\n"
+ " ]\r\n"
+ " }\r\n"
+ " }\r\n"
+ "}";
// if(true) {
// throw new Exception("stJson"+ stJson);
// }
JsonObject jsonObject = JsonUtils.convertStringToJsonObject(stJson);
sctx.setJsonRequestBody(jsonObject);
sctx.setRequestBody(Json2XMLParser.jsonToElement("requestBody", sctx.getJsonRequestBody()));
VisualizadorRelatoriosSP visualiza = (VisualizadorRelatoriosSP) ServiceUtils.getStatelessFacade(VisualizadorRelatoriosSPHome.JNDI_NAME, VisualizadorRelatoriosSPHome.class);
System.out.println("Enviando Requisição antes: " + sctx.getJsonRequestBody());
// if(true) {
// throw new Exception("get"+ sctx.getJsonRequestBody());
// }
visualiza.visualizarRelatorio(sctx);
System.out.println("Após Enviando Requisição depois: " + sctx.getJsonRequestBody());
}
//JsonObject responseBody = Json2XMLParser.elementToJson(sctx.getBodyElement());
} catch (Exception e) {
MGEModelException.throwMe(e);
} finally {
// voltar o Contexto do Botão de Ação
serviceContext.makeCurrent();
JdbcWrapper.closeSession(jdbc);
}
}
}
}
Estou tentando fazer oq essa ação faz