Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 19 additions & 9 deletions common/src/main/java/com/genexus/internet/GXNavigationHelper.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
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 org.json.JSONArray;

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";
public static String TAB_ID_HEADER = "X-Gx-Tabid";
public static String CALLED_AS_POPUP = "gxCalledAsPopup";

private Hashtable<String, Stack<String>> referers;
Expand Down Expand Up @@ -114,13 +118,13 @@ 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);
Expand All @@ -131,16 +135,22 @@ public String getUrlPopupLevel(String url)
{
try
{
popupLevel = url.substring(eqIdx+1, cIdx);
result = url.substring(eqIdx+1, cIdx);
}
catch(Exception e)
catch(IndexOutOfBoundsException e)
{
popupLevel = "-1";
logger.error(String.format("Searching parm:'%1$s' in url:'%2$s'", key, url), e);
}
}
}
}
}
return popupLevel;
return result;
}

static public String getUrlPopupLevel(String url)
{
String result = getUrlComponent( url, POPUP_LEVEL);
return result.isEmpty() ? "-1":result;
}
}
2 changes: 1 addition & 1 deletion java/src/main/java/com/genexus/internet/HttpContext.java
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ public void deleteReferer(String popupLevel)

public void deleteReferer()
{
deleteReferer(getNavigationHelper(false).getUrlPopupLevel(getRequestNavUrl()));
deleteReferer(GXNavigationHelper.getUrlPopupLevel(getRequestNavUrl()));
}

public void pushCurrentUrl()
Expand Down
16 changes: 16 additions & 0 deletions java/src/main/java/com/genexus/internet/HttpRequest.java
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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;
}
}
10 changes: 8 additions & 2 deletions java/src/main/java/com/genexus/webpanels/HttpContextWeb.java
Original file line number Diff line number Diff line change
Expand Up @@ -1063,9 +1063,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)
Expand All @@ -1078,6 +1079,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();
Expand Down
Loading