This is an automated email from the ASF dual-hosted git repository.
jleroux pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 8e492c2163 Improved: getFields() in AcroFields has been deprecated
(OFBIZ-13312)
8e492c2163 is described below
commit 8e492c2163dacbbbfe8cbc5f8704b5816a603e15
Author: Jacques Le Roux <[email protected]>
AuthorDate: Wed Nov 12 20:13:37 2025 +0100
Improved: getFields() in AcroFields has been deprecated (OFBIZ-13312)
After moving from lowagie to openPDF (OFBIZ-13300),
getFields() in AcroFields is deprecated.
Contrary to what I wrote in OFBIZ-13306, it's not related to
"Upgrade java version to 21"
This fixes it (present only in PdfSurveyServices class).
I have also improved pdfStamper.close() missing in 2 places
(almost fixed but OFBIZ-13300 was not backported, better to keep things
simple).
In one case I added it, in the other I used try-with-ressource.
I also put a comment about openpdf:1.3.43 being the last version with
com.lowagie.text embedded that is used (only) by PdfSurveyServices class.
Also some formatting
---
.../ofbiz/content/survey/PdfSurveyServices.java | 46 +++++++++++-----------
dependencies.gradle | 2 +-
2 files changed, 24 insertions(+), 24 deletions(-)
diff --git
a/applications/content/src/main/java/org/apache/ofbiz/content/survey/PdfSurveyServices.java
b/applications/content/src/main/java/org/apache/ofbiz/content/survey/PdfSurveyServices.java
index 68418e3488..ab6872cfa4 100644
---
a/applications/content/src/main/java/org/apache/ofbiz/content/survey/PdfSurveyServices.java
+++
b/applications/content/src/main/java/org/apache/ofbiz/content/survey/PdfSurveyServices.java
@@ -88,7 +88,7 @@ public class PdfSurveyServices {
PdfReader pdfReader = new PdfReader(byteBuffer.array());
PdfStamper pdfStamper = new PdfStamper(pdfReader, os);
AcroFields acroFields = pdfStamper.getAcroFields();
- Map<String, Object> acroFieldMap =
UtilGenerics.cast(acroFields.getFields());
+ Map<String, Object> acroFieldMap =
UtilGenerics.cast(acroFields.getAllFields());
String contentId = (String) context.get("contentId");
GenericValue survey = null;
@@ -107,6 +107,7 @@ public class PdfSurveyServices {
UtilMisc.<String, Object>toMap("description", "From
AcroForm in Content [" + contentId + "] for Survey [" + surveyId
+ "]", "userLogin", userLogin));
if (ServiceUtil.isError(createCategoryResultMap)) {
+ pdfStamper.close();
return
ServiceUtil.returnError(ServiceUtil.getErrorMessage(createCategoryResultMap));
}
String surveyQuestionCategoryId = (String)
createCategoryResultMap.get("surveyQuestionCategoryId");
@@ -234,15 +235,15 @@ public class PdfSurveyServices {
String surveyId = (String) context.get("surveyId");
surveyResponseId = (String) context.get("surveyResponseId");
if (UtilValidate.isNotEmpty(surveyResponseId)) {
- GenericValue surveyResponse =
EntityQuery.use(delegator).from("SurveyResponse").where("surveyResponseId",
- surveyResponseId).queryOne();
+ GenericValue surveyResponse =
EntityQuery.use(delegator).from("SurveyResponse")
+ .where("surveyResponseId",
surveyResponseId).queryOne();
if (surveyResponse != null) {
surveyId = surveyResponse.getString("surveyId");
}
} else {
surveyResponseId = delegator.getNextSeqId("SurveyResponse");
- GenericValue surveyResponse =
delegator.makeValue("SurveyResponse", UtilMisc.toMap("surveyResponseId",
- surveyResponseId, "surveyId", surveyId, "partyId",
partyId));
+ GenericValue surveyResponse =
delegator.makeValue("SurveyResponse",
+ UtilMisc.toMap("surveyResponseId", surveyResponseId,
"surveyId", surveyId, "partyId", partyId));
surveyResponse.set("responseDate",
UtilDateTime.nowTimestamp());
surveyResponse.set("lastModifiedDate",
UtilDateTime.nowTimestamp());
surveyResponse.create();
@@ -253,24 +254,23 @@ public class PdfSurveyServices {
PdfReader r = new PdfReader(byteBuffer.array());
PdfStamper s = new PdfStamper(r, os);
AcroFields fs = s.getAcroFields();
- Map<String, Object> hm = UtilGenerics.cast(fs.getFields());
+ Map<String, Object> hm = UtilGenerics.cast(fs.getAllFields());
s.setFormFlattening(true);
for (String fieldName : hm.keySet()) {
- //AcroFields.Item item = fs.getFieldItem(fieldName);
+ // AcroFields.Item item = fs.getFieldItem(fieldName);
String value = fs.getField(fieldName);
GenericValue surveyQuestionAndAppl =
EntityQuery.use(delegator).from("SurveyQuestionAndAppl")
- .where("surveyId", surveyId,
- "externalFieldRef", fieldName)
- .queryFirst();
+ .where("surveyId", surveyId, "externalFieldRef",
fieldName).queryFirst();
if (surveyQuestionAndAppl == null) {
- Debug.logInfo("No question found for surveyId:" + surveyId
+ " and externalFieldRef:" + fieldName, MODULE);
+ Debug.logInfo("No question found for surveyId:" + surveyId
+ " and externalFieldRef:" + fieldName,
+ MODULE);
continue;
}
String surveyQuestionId = (String)
surveyQuestionAndAppl.get("surveyQuestionId");
String surveyQuestionTypeId = (String)
surveyQuestionAndAppl.get("surveyQuestionTypeId");
- GenericValue surveyResponseAnswer =
delegator.makeValue("SurveyResponseAnswer", UtilMisc.toMap("surveyResponseId",
- surveyResponseId, "surveyQuestionId",
surveyQuestionId));
+ GenericValue surveyResponseAnswer =
delegator.makeValue("SurveyResponseAnswer",
+ UtilMisc.toMap("surveyResponseId", surveyResponseId,
"surveyQuestionId", surveyQuestionId));
if (surveyQuestionTypeId == null ||
"TEXT_SHORT".equals(surveyQuestionTypeId)) {
surveyResponseAnswer.set("textResponse", value);
}
@@ -290,17 +290,17 @@ public class PdfSurveyServices {
}
/**
+ * @throws GeneralException if getInputByteBuffer fails
*/
- public static Map<String, Object> getAcroFieldsFromPdf(DispatchContext
dctx, Map<String, ? extends Object> context) {
+ public static Map<String, Object> getAcroFieldsFromPdf(DispatchContext
dctx, Map<String, ? extends Object> context) throws GeneralException {
Map<String, Object> acroFieldMap = new HashMap<>();
- try {
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- Delegator delegator = dctx.getDelegator();
- ByteBuffer byteBuffer = getInputByteBuffer(context, delegator);
- PdfReader r = new PdfReader(byteBuffer.array());
- PdfStamper s = new PdfStamper(r, os);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ Delegator delegator = dctx.getDelegator();
+ ByteBuffer byteBuffer = getInputByteBuffer(context, delegator);
+ try (PdfReader r = new PdfReader(byteBuffer.array());
+ PdfStamper s = new PdfStamper(r, os)) {
AcroFields fs = s.getAcroFields();
- Map<String, Object> map = UtilGenerics.cast(fs.getFields());
+ Map<String, Object> map = UtilGenerics.cast(fs.getAllFields());
s.setFormFlattening(true);
for (String fieldName : map.keySet()) {
@@ -308,7 +308,7 @@ public class PdfSurveyServices {
acroFieldMap.put(fieldName, parmValue);
}
- } catch (DocumentException | GeneralException | IOException e) {
+ } catch (DocumentException | IOException e) {
Debug.logError(e, MODULE);
return ServiceUtil.returnError(e.getMessage());
}
@@ -330,7 +330,7 @@ public class PdfSurveyServices {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfStamper s = new PdfStamper(r, baos);
AcroFields fs = s.getAcroFields();
- Map<String, Object> map = UtilGenerics.cast(fs.getFields());
+ Map<String, Object> map = UtilGenerics.cast(fs.getAllFields());
s.setFormFlattening(true);
for (String fieldName : map.keySet()) {
diff --git a/dependencies.gradle b/dependencies.gradle
index 7f1dffc428..bcfed3b957 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -26,7 +26,7 @@ dependencies {
implementation
'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20240325.1'
implementation 'com.googlecode.libphonenumber:libphonenumber:8.13.52'
implementation 'com.ibm.icu:icu4j:76.1'
- implementation 'com.github.librepdf:openpdf:1.3.43'
+ implementation 'com.github.librepdf:openpdf:1.3.43' // This is the last
version with com.lowagie.text that is used (only) by PdfSurveyServices class.
implementation 'com.sun.mail:javax.mail:1.6.2'
implementation 'com.rometools:rome:2.1.0'
implementation 'com.thoughtworks.xstream:xstream:1.4.21'