From 0b04096ec9e0f48440237659c0dff71638bdd5b4 Mon Sep 17 00:00:00 2001 From: iroqueta Date: Fri, 17 Oct 2025 12:23:29 -0300 Subject: [PATCH] The User Agent Header property is implemented Issue: 206488 --- java/src/main/java/com/genexus/GXutil.java | 9 +++++++++ .../java/com/genexus/db/driver/GXPreparedStatement.java | 4 ++-- .../java/com/genexus/internet/HttpClientJavaLib.java | 4 ++++ .../main/java/com/genexus/reports/PDFReportItext2.java | 9 +++------ .../main/java/com/genexus/reports/PDFReportItext8.java | 6 +++--- .../main/java/com/genexus/reports/PDFReportPDFBox.java | 6 +++--- 6 files changed, 24 insertions(+), 14 deletions(-) diff --git a/java/src/main/java/com/genexus/GXutil.java b/java/src/main/java/com/genexus/GXutil.java index 651132125..2d3ced09b 100644 --- a/java/src/main/java/com/genexus/GXutil.java +++ b/java/src/main/java/com/genexus/GXutil.java @@ -10,12 +10,14 @@ import com.genexus.common.interfaces.SpecificImplementation; import com.genexus.db.DataStoreProvider; import com.genexus.db.GXEmbedding; +import com.genexus.internet.HttpClient; import com.genexus.internet.HttpContext; import com.genexus.internet.StringCollection; import com.genexus.platform.INativeFunctions; import com.genexus.platform.NativeFunctions; import com.genexus.util.*; +import org.apache.commons.io.IOUtils; import org.json.JSONObject; import org.apache.commons.lang3.StringUtils; @@ -1782,4 +1784,11 @@ public static String embeddingToStr(GXEmbedding embedding) { return embedding.toString(); } + public static byte[] ImageUrlToBytes(String url) throws IOException{ + HttpClient httpClient = new HttpClient(); + httpClient.execute( "GET", url); + try (InputStream in = httpClient.getInputStream()) { + return IOUtils.toByteArray(in); + } + } } diff --git a/java/src/main/java/com/genexus/db/driver/GXPreparedStatement.java b/java/src/main/java/com/genexus/db/driver/GXPreparedStatement.java index 01ba0cb81..6f5808264 100644 --- a/java/src/main/java/com/genexus/db/driver/GXPreparedStatement.java +++ b/java/src/main/java/com/genexus/db/driver/GXPreparedStatement.java @@ -1391,10 +1391,10 @@ public void setBLOBFile(int index, String fileName, boolean isMultiMedia) throws int queryIndex = fileName.lastIndexOf('?'); if (queryIndex > -1) fileName = fileName.substring(0, queryIndex + 1) + PrivateUtilities.encodeURL(fileName.substring(queryIndex + 1)); - URL fileURL = new URL(fileName); + String fileURL = fileName; String blobPath = com.genexus.Preferences.getDefaultPreferences().getBLOB_PATH(); fileName = com.genexus.PrivateUtilities.getTempFileName(blobPath, CommonUtil.getFileName(fileName), CommonUtil.getFileType(fileName), true); - com.genexus.PrivateUtilities.InputStreamToFile(fileURL.openStream() ,fileName); + new com.genexus.util.GXFile(fileName).fromBytes(GXutil.ImageUrlToBytes(fileURL)); } } catch(MalformedURLException e) diff --git a/java/src/main/java/com/genexus/internet/HttpClientJavaLib.java b/java/src/main/java/com/genexus/internet/HttpClientJavaLib.java index b938a43ec..f255d7ebf 100644 --- a/java/src/main/java/com/genexus/internet/HttpClientJavaLib.java +++ b/java/src/main/java/com/genexus/internet/HttpClientJavaLib.java @@ -93,6 +93,10 @@ public HttpClientJavaLib() { if (isFirstIpDnsEnabled()) { builder.setDnsResolver(FIRST_IP_DNS_RESOLVER); } + String userAgent = clientCfg.getProperty("Client", "UserAgentHeader", ""); + if (!userAgent.isEmpty()) { + builder.setUserAgent(userAgent); + } httpClientBuilder = builder; cookies = new BasicCookieStore(); streamsToClose = new Vector<>(); diff --git a/java/src/main/java/com/genexus/reports/PDFReportItext2.java b/java/src/main/java/com/genexus/reports/PDFReportItext2.java index 9634e0a9a..3a3cee47d 100644 --- a/java/src/main/java/com/genexus/reports/PDFReportItext2.java +++ b/java/src/main/java/com/genexus/reports/PDFReportItext2.java @@ -9,6 +9,7 @@ import com.genexus.ApplicationContext; import com.genexus.CommonUtil; +import com.genexus.GXutil; import com.genexus.ModelContext; import com.genexus.platform.NativeFunctions; import com.genexus.webpanels.HttpContextWeb; @@ -396,9 +397,8 @@ public void GxDrawBitMap(String bitmap, int left, int top, int right, int bottom } } } - catch(java.lang.IllegalArgumentException ex) {//Puede ser una url absoluta - java.net.URL url= new java.net.URL(bitmap); - image = com.lowagie.text.Image.getInstance(url); + catch(java.lang.IllegalArgumentException | IOException ex) {//Puede ser una url absoluta + image = com.lowagie.text.Image.getInstance(GXutil.ImageUrlToBytes(bitmap)); } if (documentImages == null) { @@ -443,9 +443,6 @@ public void GxDrawBitMap(String bitmap, int left, int top, int right, int bottom catch(DocumentException de) { log.error("GxDrawBitMap failed:", de); } - catch(IOException ioe) { - log.error("GxDrawBitMap failed:", ioe); - } catch(Exception e) { log.error("GxDrawBitMap failed:", e); } diff --git a/java/src/main/java/com/genexus/reports/PDFReportItext8.java b/java/src/main/java/com/genexus/reports/PDFReportItext8.java index 84eeb0631..f7652c1ea 100644 --- a/java/src/main/java/com/genexus/reports/PDFReportItext8.java +++ b/java/src/main/java/com/genexus/reports/PDFReportItext8.java @@ -2,6 +2,7 @@ import com.genexus.ApplicationContext; import com.genexus.CommonUtil; +import com.genexus.GXutil; import com.genexus.ModelContext; import com.genexus.platform.NativeFunctions; import com.genexus.reports.fonts.PDFFont; @@ -425,9 +426,8 @@ public void GxDrawBitMap(String bitmap, int left, int top, int right, int bottom } } } - catch(java.lang.IllegalArgumentException ex) { - URL url= new java.net.URL(bitmap); - imageData = ImageDataFactory.create(url); + catch(java.lang.IllegalArgumentException | com.itextpdf.io.exceptions.IOException ex) { + imageData = ImageDataFactory.create(GXutil.ImageUrlToBytes(bitmap)); } if (documentImages == null) { diff --git a/java/src/main/java/com/genexus/reports/PDFReportPDFBox.java b/java/src/main/java/com/genexus/reports/PDFReportPDFBox.java index fb326098c..126d202d4 100644 --- a/java/src/main/java/com/genexus/reports/PDFReportPDFBox.java +++ b/java/src/main/java/com/genexus/reports/PDFReportPDFBox.java @@ -9,6 +9,7 @@ import com.genexus.ApplicationContext; import com.genexus.CommonUtil; +import com.genexus.GXutil; import com.genexus.ModelContext; import com.genexus.platform.NativeFunctions; import com.genexus.webpanels.HttpContextWeb; @@ -377,9 +378,8 @@ public void GxDrawBitMap(String bitmap, int left, int top, int right, int bottom } } } - catch(java.lang.IllegalArgumentException ex) { - URL url= new java.net.URL(bitmap); - image = PDImageXObject.createFromByteArray(document, IOUtils.toByteArray(url.openStream()),bitmap); + catch(java.lang.IllegalArgumentException | java.io.FileNotFoundException ex) { + image = PDImageXObject.createFromByteArray(document, GXutil.ImageUrlToBytes(bitmap),bitmap); } if (documentImages == null) {