From 610b00db156a92a4bfe95f68e65d932600f8168a Mon Sep 17 00:00:00 2001 From: dmendez Date: Thu, 6 Jun 2024 21:59:47 -0300 Subject: [PATCH 1/3] Issue-108639-WEB-request-tabId --- .../genexus/internet/GXNavigationHelper.java | 19 ++++++++++++------- .../com/genexus/internet/HttpRequest.java | 16 ++++++++++++++++ .../com/genexus/webpanels/HttpContextWeb.java | 10 ++++++++-- 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/common/src/main/java/com/genexus/internet/GXNavigationHelper.java b/common/src/main/java/com/genexus/internet/GXNavigationHelper.java index e478bd7f0..b6452115b 100644 --- a/common/src/main/java/com/genexus/internet/GXNavigationHelper.java +++ b/common/src/main/java/com/genexus/internet/GXNavigationHelper.java @@ -12,6 +12,8 @@ public class GXNavigationHelper implements Serializable private static final long serialVersionUID = 2608956804836620190L; public static String POPUP_LEVEL = "gxPopupLevel"; + public static String TAB_ID = "gxTabId"; + public static String TAB_ID_HEADER = "X-Gx-Tabid"; public static String CALLED_AS_POPUP = "gxCalledAsPopup"; private Hashtable> referers; @@ -114,13 +116,12 @@ public void deleteStack(String popupLevel) referers.remove(popupLevel); } - public String getUrlPopupLevel(String url) - { + static public String getUrlComponent(String url, String key) { url = SpecificImplementation.GXutil.URLDecode(url); - String popupLevel = "-1"; + String result = ""; if (url != null) { - int pIdx = url.indexOf(POPUP_LEVEL); + int pIdx = url.indexOf(key); if (pIdx != -1) { int eqIdx = url.indexOf("=", pIdx); @@ -131,16 +132,20 @@ public String getUrlPopupLevel(String url) { try { - popupLevel = url.substring(eqIdx+1, cIdx); + result = url.substring(eqIdx+1, cIdx); } catch(Exception e) { - popupLevel = "-1"; } } } } } - return popupLevel; + return result; + } + + public String getUrlPopupLevel(String url) + { + return getUrlComponent( url, POPUP_LEVEL); } } diff --git a/java/src/main/java/com/genexus/internet/HttpRequest.java b/java/src/main/java/com/genexus/internet/HttpRequest.java index 1418280e1..7ab79cf8b 100644 --- a/java/src/main/java/com/genexus/internet/HttpRequest.java +++ b/java/src/main/java/com/genexus/internet/HttpRequest.java @@ -21,6 +21,7 @@ public abstract class HttpRequest implements IHttpRequest private int errCode; private String errDescription; private String Referrer = ""; + private String tabId = ""; protected HttpContext httpContext; public HttpRequest(HttpContext httpContext) @@ -259,4 +260,19 @@ public void setErrCode(int errCode){ public void setErrDescription(String errDsc){ this.errDescription = errDsc; } + + public String getTabId() + { + String sUrl = httpContext.getRequestNavUrl().trim(); + + if ( tabId.isEmpty()) + { + tabId = GXNavigationHelper.getUrlComponent(sUrl, GXNavigationHelper.TAB_ID); + } + if ( tabId.isEmpty()) + { + tabId = getHeader(GXNavigationHelper.TAB_ID_HEADER); + } + return tabId; + } } diff --git a/java/src/main/java/com/genexus/webpanels/HttpContextWeb.java b/java/src/main/java/com/genexus/webpanels/HttpContextWeb.java index d54081c8c..d53004715 100644 --- a/java/src/main/java/com/genexus/webpanels/HttpContextWeb.java +++ b/java/src/main/java/com/genexus/webpanels/HttpContextWeb.java @@ -1062,9 +1062,10 @@ public void setQueryString(String qs) { loadParameters(qs); } - private String removeInternalParms(String query) { + private String removeInternalParm(String query, String parm) + { query = removeEventPrefix(query); - int idx = query.indexOf(GXNavigationHelper.POPUP_LEVEL); + int idx = query.indexOf(parm); if (idx == 1) return ""; if (idx > 1) @@ -1077,6 +1078,11 @@ private String removeInternalParms(String query) { return query; } + private String removeInternalParms(String query) { + query = removeInternalParm( query, GXNavigationHelper.POPUP_LEVEL); + return removeInternalParm( query, GXNavigationHelper.TAB_ID); + } + public String getQueryString() { try { String query = request.getQueryString(); From 8ac2c253af9dc100b48d92f2abc1e85e54f112c9 Mon Sep 17 00:00:00 2001 From: dmendez Date: Fri, 7 Jun 2024 15:20:37 -0300 Subject: [PATCH 2/3] Adding logger/better exception handling/static access --- .../com/genexus/internet/GXNavigationHelper.java | 16 +++++++++------- .../java/com/genexus/internet/HttpContext.java | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/common/src/main/java/com/genexus/internet/GXNavigationHelper.java b/common/src/main/java/com/genexus/internet/GXNavigationHelper.java index b6452115b..6b39fbfce 100644 --- a/common/src/main/java/com/genexus/internet/GXNavigationHelper.java +++ b/common/src/main/java/com/genexus/internet/GXNavigationHelper.java @@ -1,15 +1,15 @@ package com.genexus.internet; import java.util.*; -import com.genexus.CommonUtil; import com.genexus.common.interfaces.SpecificImplementation; - +import com.genexus.diagnostics.core.ILogger; +import com.genexus.diagnostics.core.LogManager; import json.org.json.*; - import java.io.Serializable; public class GXNavigationHelper implements Serializable { - private static final long serialVersionUID = 2608956804836620190L; + private static final long serialVersionUID = 2608956804836620190L; + private static final ILogger logger = LogManager.getLogger(GXNavigationHelper.class); public static String POPUP_LEVEL = "gxPopupLevel"; public static String TAB_ID = "gxTabId"; @@ -116,7 +116,8 @@ public void deleteStack(String popupLevel) referers.remove(popupLevel); } - static public String getUrlComponent(String url, String key) { + static public String getUrlComponent(String url, String key) + { url = SpecificImplementation.GXutil.URLDecode(url); String result = ""; if (url != null) @@ -134,8 +135,9 @@ static public String getUrlComponent(String url, String key) { { result = url.substring(eqIdx+1, cIdx); } - catch(Exception e) + catch(IndexOutOfBoundsException e) { + logger.error(String.format("Searching parm:'%1$s' in url:'%2$s'", key, url), e); } } } @@ -144,7 +146,7 @@ static public String getUrlComponent(String url, String key) { return result; } - public String getUrlPopupLevel(String url) + static public String getUrlPopupLevel(String url) { return getUrlComponent( url, POPUP_LEVEL); } diff --git a/java/src/main/java/com/genexus/internet/HttpContext.java b/java/src/main/java/com/genexus/internet/HttpContext.java index f7bf07879..2a1c6d5c4 100644 --- a/java/src/main/java/com/genexus/internet/HttpContext.java +++ b/java/src/main/java/com/genexus/internet/HttpContext.java @@ -351,7 +351,7 @@ public void deleteReferer(String popupLevel) public void deleteReferer() { - deleteReferer(getNavigationHelper(false).getUrlPopupLevel(getRequestNavUrl())); + deleteReferer(GXNavigationHelper.getUrlPopupLevel(getRequestNavUrl())); } public void pushCurrentUrl() From 093c1367b6644a7695fdb22fce5d361c15772433 Mon Sep 17 00:00:00 2001 From: dmendez Date: Thu, 13 Jun 2024 21:07:32 -0300 Subject: [PATCH 3/3] fix popuplevel should be "-1" when not present --- .../src/main/java/com/genexus/internet/GXNavigationHelper.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/com/genexus/internet/GXNavigationHelper.java b/common/src/main/java/com/genexus/internet/GXNavigationHelper.java index 6b39fbfce..b4da6a41c 100644 --- a/common/src/main/java/com/genexus/internet/GXNavigationHelper.java +++ b/common/src/main/java/com/genexus/internet/GXNavigationHelper.java @@ -148,6 +148,7 @@ static public String getUrlComponent(String url, String key) static public String getUrlPopupLevel(String url) { - return getUrlComponent( url, POPUP_LEVEL); + String result = getUrlComponent( url, POPUP_LEVEL); + return result.isEmpty() ? "-1":result; } }