From 3d3f2119942f9638125f51be9bcecf62cbdfc4f5 Mon Sep 17 00:00:00 2001 From: Adam Wright Date: Fri, 27 Feb 2026 14:02:44 -0500 Subject: [PATCH] added checking for null safty for instance edit date and summation --- .../service/controller/ReportController.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/reactome/server/analysis/service/controller/ReportController.java b/src/main/java/org/reactome/server/analysis/service/controller/ReportController.java index f7146cd..5beb73b 100644 --- a/src/main/java/org/reactome/server/analysis/service/controller/ReportController.java +++ b/src/main/java/org/reactome/server/analysis/service/controller/ReportController.java @@ -37,6 +37,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.ConnectException; @@ -117,21 +118,29 @@ public void generatePdfReport(@Parameter(name = "token", required = true, descri long reportStart = System.currentTimeMillis(); AnalysisStoredResult asr = this.token.getFromToken(token); + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + analysisReport.create(asr, resource, s.getDbId(), number, importableOnly, diagramProfile, analysisProfile, fireworksProfile, buffer); + response.setContentType("application/pdf"); response.setHeader("Content-Disposition", "attachment; filename=\"" + "report.pdf" + "\""); - + response.setContentLength(buffer.size()); OutputStream os = response.getOutputStream(); - analysisReport.create(asr, resource, s.getDbId(), number, importableOnly, diagramProfile, analysisProfile, fireworksProfile, os); + buffer.writeTo(os); + os.flush(); Long reportTime = System.currentTimeMillis() - reportStart; logger.debug(String.format("_REPORT_ format:PDF token:%s pathways:%d time:%s", token, number, FormatUtils.getTimeFormatted(reportTime))); Map map = getReportInformation(request); doAsyncSearchReport(map.get("ip-address"), waitingTime, reportTime, number, map.get("user-agent")); - } catch (PdfException | IllegalStateException | IOException ise) { + } catch (PdfException | IllegalStateException e) { + logger.error(String.format("_REPORT_ format:PDF token:%s PDF_Generation_Failed", token), e); + try { response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Failed to generate PDF report"); } catch (IOException ignored) {} + } catch (IOException e) { logger.debug(String.format("_REPORT_ format:PDF token:%s User_Closed_Connection", token)); } catch (AnalysisExporterException e) { - throw new RuntimeException(e.getMessage()); + logger.error(String.format("_REPORT_ format:PDF token:%s Export_Failed", token), e); + try { response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Failed to generate PDF report"); } catch (IOException ignored) {} } finally { synchronized (REPORT_SEMAPHORE) { REPORT_COUNT--;