From f8d07f849e7541f31e557277c21570c7cffa6207 Mon Sep 17 00:00:00 2001 From: Brandon Bernard Date: Thu, 11 Aug 2022 17:47:58 -0500 Subject: [PATCH] Small code improvements, and some logging added to better know when successful rendering was completed (including Pdf Bytes Size). --- .../serverless/apachefop/ApacheFopRenderResult.java | 2 +- .../apachefop/serverless/apachefop/ApacheFopRenderer.java | 6 +----- .../serverless/config/ApacheFopServerlessConfig.java | 2 +- .../cajuncoding/apachefop/serverless/utils/TextUtils.java | 4 ---- .../web/ApacheFopServerlessFunctionExecutor.java | 3 +++ .../cajuncoding/apachefop/serverless/web/SafeHeader.java | 7 ++++--- 6 files changed, 10 insertions(+), 14 deletions(-) diff --git a/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/apachefop/ApacheFopRenderResult.java b/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/apachefop/ApacheFopRenderResult.java index 66f6aa0..a1b4e22 100644 --- a/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/apachefop/ApacheFopRenderResult.java +++ b/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/apachefop/ApacheFopRenderResult.java @@ -7,7 +7,7 @@ public class ApacheFopRenderResult { private final ApacheFopEventListener eventListener; public ApacheFopRenderResult(byte[] pdfBytes, ApacheFopEventListener eventListener) { - this.pdfBytes = pdfBytes; + this.pdfBytes = pdfBytes != null ? pdfBytes : new byte[0]; this.eventListener = eventListener; } diff --git a/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/apachefop/ApacheFopRenderer.java b/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/apachefop/ApacheFopRenderer.java index a77d910..d985933 100644 --- a/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/apachefop/ApacheFopRenderer.java +++ b/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/apachefop/ApacheFopRenderer.java @@ -10,9 +10,7 @@ import org.apache.fop.apps.*; import org.apache.fop.configuration.ConfigurationException; import org.apache.fop.configuration.DefaultConfigurationBuilder; -import org.xml.sax.SAXException; -import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.*; import javax.xml.transform.sax.SAXResult; import javax.xml.transform.stream.StreamSource; @@ -94,8 +92,6 @@ public ApacheFopRenderResult renderPdfResult(String xslFOSource, boolean gzipEna } } - - protected synchronized void initApacheFopFactorySafely() { if(staticFopFactory == null) { var baseUri = new File(".").toURI(); @@ -104,7 +100,7 @@ protected synchronized void initApacheFopFactorySafely() { try { String configXmlText = ResourceUtils.loadResourceAsString(configFilePath); - if (!StringUtils.isBlank(configXmlText)) { + if (StringUtils.isNotBlank(configXmlText)) { //When Debugging log the full Configuration file... if(this.apacheFopConfig.isDebuggingEnabled()) { diff --git a/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/config/ApacheFopServerlessConfig.java b/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/config/ApacheFopServerlessConfig.java index 8079bee..32c58d6 100644 --- a/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/config/ApacheFopServerlessConfig.java +++ b/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/config/ApacheFopServerlessConfig.java @@ -83,7 +83,7 @@ protected void readRequestQueryParamsConfig(Map queryParams) { //Determine if Event Log Dump mode is enabled (vs PDF Binary return). this.eventLogDumpModeEnabled = BooleanUtils.toBoolean( - queryParams.getOrDefault(ApacheFopServerlessQueryParams.EventLogDump, null) + queryParams.getOrDefault(ApacheFopServerlessQueryParams.EventLogDump, null) ); } diff --git a/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/utils/TextUtils.java b/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/utils/TextUtils.java index 6a83b56..597732b 100644 --- a/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/utils/TextUtils.java +++ b/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/utils/TextUtils.java @@ -18,10 +18,6 @@ public static String getCurrentW3cDateTime() { return currentW3cDateTime; } - public static boolean isNullOrWhiteSpace(String value) { - return value == null || value.isBlank(); - } - /** * Truncates a string to the number of characters that fit in X bytes avoiding multi byte characters being cut in * half at the cut off point. Also handles surrogate pairs where 2 characters in the string is actually one literal diff --git a/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/web/ApacheFopServerlessFunctionExecutor.java b/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/web/ApacheFopServerlessFunctionExecutor.java index 02c24cc..8c8d92b 100644 --- a/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/web/ApacheFopServerlessFunctionExecutor.java +++ b/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/web/ApacheFopServerlessFunctionExecutor.java @@ -92,6 +92,9 @@ protected HttpResponseMessage ExecuteRequestInternal( //Execute the transformation of the XSL-FO source content to Binary PDF format... var pdfRenderResult = fopHelper.renderPdfResult(xslFOBodyContent, config.isGzipResponseEnabled()); + //Add some contextual Logging so we can know if the PDF bytes were rendered... + logger.info(MessageFormat.format("[SUCCESS] Successfully Rendered PDF with [{0}] bytes.", pdfRenderResult.getPdfBytes().length)); + //Render the PDF Response (or EventLog Dump if specified)... var response = config.isEventLogDumpModeEnabled() ? responseBuilder.BuildEventLogDumpResponse(pdfRenderResult, config) diff --git a/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/web/SafeHeader.java b/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/web/SafeHeader.java index 7f0678a..410c995 100644 --- a/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/web/SafeHeader.java +++ b/apachefop-serverless-az-func/src/main/java/com/cajuncoding/apachefop/serverless/web/SafeHeader.java @@ -1,7 +1,8 @@ package com.cajuncoding.apachefop.serverless.web; import com.cajuncoding.apachefop.serverless.http.HttpEncodings; -import com.cajuncoding.apachefop.serverless.utils.TextUtils; + +import org.apache.commons.lang3.StringUtils; import org.apache.commons.text.StringEscapeUtils; import java.io.UnsupportedEncodingException; @@ -19,10 +20,10 @@ public SafeHeader(String value, String encoding) throws UnsupportedEncodingExcep public String getValue() { return value; } protected String sanitizeTextForHttpHeader(String value, String encoding) throws UnsupportedEncodingException { - if(TextUtils.isNullOrWhiteSpace(value)) + if(StringUtils.isBlank(value)) return value; - if(encoding != null && encoding != HttpEncodings.IDENTITY_ENCODING) + if(StringUtils.isNotBlank(encoding) && !encoding.equalsIgnoreCase(HttpEncodings.IDENTITY_ENCODING)) return value; //BBernard - 09/29/2021