Skip to content

Commit 850a568

Browse files
dmendeziroqueta
andauthored
Issue-108639-WEB-request-tabId (#875)
* Issue-108639-WEB-request-tabId * Adding logger/better exception handling/static access * fix popuplevel should be "-1" when not present --------- Co-authored-by: iroqueta <46004974+iroqueta@users.noreply.github.com>
1 parent 1ddae23 commit 850a568

File tree

4 files changed

+44
-12
lines changed

4 files changed

+44
-12
lines changed

common/src/main/java/com/genexus/internet/GXNavigationHelper.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
package com.genexus.internet;
22
import java.util.*;
3-
import com.genexus.CommonUtil;
43
import com.genexus.common.interfaces.SpecificImplementation;
4+
import com.genexus.diagnostics.core.ILogger;
5+
import com.genexus.diagnostics.core.LogManager;
56

67
import org.json.JSONArray;
78

89
import java.io.Serializable;
910

1011
public class GXNavigationHelper implements Serializable
1112
{
12-
private static final long serialVersionUID = 2608956804836620190L;
13+
private static final long serialVersionUID = 2608956804836620190L;
14+
private static final ILogger logger = LogManager.getLogger(GXNavigationHelper.class);
1315

1416
public static String POPUP_LEVEL = "gxPopupLevel";
17+
public static String TAB_ID = "gxTabId";
18+
public static String TAB_ID_HEADER = "X-Gx-Tabid";
1519
public static String CALLED_AS_POPUP = "gxCalledAsPopup";
1620

1721
private Hashtable<String, Stack<String>> referers;
@@ -114,13 +118,13 @@ public void deleteStack(String popupLevel)
114118
referers.remove(popupLevel);
115119
}
116120

117-
public String getUrlPopupLevel(String url)
121+
static public String getUrlComponent(String url, String key)
118122
{
119123
url = SpecificImplementation.GXutil.URLDecode(url);
120-
String popupLevel = "-1";
124+
String result = "";
121125
if (url != null)
122126
{
123-
int pIdx = url.indexOf(POPUP_LEVEL);
127+
int pIdx = url.indexOf(key);
124128
if (pIdx != -1)
125129
{
126130
int eqIdx = url.indexOf("=", pIdx);
@@ -131,16 +135,22 @@ public String getUrlPopupLevel(String url)
131135
{
132136
try
133137
{
134-
popupLevel = url.substring(eqIdx+1, cIdx);
138+
result = url.substring(eqIdx+1, cIdx);
135139
}
136-
catch(Exception e)
140+
catch(IndexOutOfBoundsException e)
137141
{
138-
popupLevel = "-1";
142+
logger.error(String.format("Searching parm:'%1$s' in url:'%2$s'", key, url), e);
139143
}
140144
}
141145
}
142146
}
143147
}
144-
return popupLevel;
148+
return result;
149+
}
150+
151+
static public String getUrlPopupLevel(String url)
152+
{
153+
String result = getUrlComponent( url, POPUP_LEVEL);
154+
return result.isEmpty() ? "-1":result;
145155
}
146156
}

java/src/main/java/com/genexus/internet/HttpContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ public void deleteReferer(String popupLevel)
350350

351351
public void deleteReferer()
352352
{
353-
deleteReferer(getNavigationHelper(false).getUrlPopupLevel(getRequestNavUrl()));
353+
deleteReferer(GXNavigationHelper.getUrlPopupLevel(getRequestNavUrl()));
354354
}
355355

356356
public void pushCurrentUrl()

java/src/main/java/com/genexus/internet/HttpRequest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public abstract class HttpRequest implements IHttpRequest
2121
private int errCode;
2222
private String errDescription;
2323
private String Referrer = "";
24+
private String tabId = "";
2425
protected HttpContext httpContext;
2526

2627
public HttpRequest(HttpContext httpContext)
@@ -259,4 +260,19 @@ public void setErrCode(int errCode){
259260
public void setErrDescription(String errDsc){
260261
this.errDescription = errDsc;
261262
}
263+
264+
public String getTabId()
265+
{
266+
String sUrl = httpContext.getRequestNavUrl().trim();
267+
268+
if ( tabId.isEmpty())
269+
{
270+
tabId = GXNavigationHelper.getUrlComponent(sUrl, GXNavigationHelper.TAB_ID);
271+
}
272+
if ( tabId.isEmpty())
273+
{
274+
tabId = getHeader(GXNavigationHelper.TAB_ID_HEADER);
275+
}
276+
return tabId;
277+
}
262278
}

java/src/main/java/com/genexus/webpanels/HttpContextWeb.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1063,9 +1063,10 @@ public void setQueryString(String qs) {
10631063
loadParameters(qs);
10641064
}
10651065

1066-
private String removeInternalParms(String query) {
1066+
private String removeInternalParm(String query, String parm)
1067+
{
10671068
query = removeEventPrefix(query);
1068-
int idx = query.indexOf(GXNavigationHelper.POPUP_LEVEL);
1069+
int idx = query.indexOf(parm);
10691070
if (idx == 1)
10701071
return "";
10711072
if (idx > 1)
@@ -1078,6 +1079,11 @@ private String removeInternalParms(String query) {
10781079
return query;
10791080
}
10801081

1082+
private String removeInternalParms(String query) {
1083+
query = removeInternalParm( query, GXNavigationHelper.POPUP_LEVEL);
1084+
return removeInternalParm( query, GXNavigationHelper.TAB_ID);
1085+
}
1086+
10811087
public String getQueryString() {
10821088
try {
10831089
String query = request.getQueryString();

0 commit comments

Comments
 (0)