From 3499b52e6a61ec9fb0449c06da2b4312753affc5 Mon Sep 17 00:00:00 2001 From: rnavagamuwa Date: Mon, 1 Apr 2019 10:18:58 +0530 Subject: [PATCH] Updated the path param extracting mechanism --- .../org/wso2/spring/security/abac/util/GeneralUtils.java | 4 ---- .../security/abac/util/XacmlAuthRequestBuilder.java | 9 +++++++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/sdk/src/main/java/org/wso2/spring/security/abac/util/GeneralUtils.java b/sdk/src/main/java/org/wso2/spring/security/abac/util/GeneralUtils.java index 09a0984..50e1be6 100644 --- a/sdk/src/main/java/org/wso2/spring/security/abac/util/GeneralUtils.java +++ b/sdk/src/main/java/org/wso2/spring/security/abac/util/GeneralUtils.java @@ -17,8 +17,4 @@ static Map extractValuesFromCookies(Cookie[] cookies) { } return cookieValues; } - - static String[] splitContextPath(String contextPath){ - return contextPath.split("/"); - } } diff --git a/sdk/src/main/java/org/wso2/spring/security/abac/util/XacmlAuthRequestBuilder.java b/sdk/src/main/java/org/wso2/spring/security/abac/util/XacmlAuthRequestBuilder.java index 77e2242..314d7bc 100644 --- a/sdk/src/main/java/org/wso2/spring/security/abac/util/XacmlAuthRequestBuilder.java +++ b/sdk/src/main/java/org/wso2/spring/security/abac/util/XacmlAuthRequestBuilder.java @@ -7,6 +7,7 @@ import org.json.JSONObject; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.servlet.HandlerMapping; import org.wso2.spring.security.abac.cache.Cache; import org.wso2.spring.security.abac.cache.EhCacheManager; import org.wso2.spring.security.abac.exception.AttributeEvaluatorException; @@ -14,7 +15,6 @@ import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.io.StringWriter; -import java.io.UnsupportedEncodingException; import java.util.Base64; import java.util.HashMap; import java.util.Iterator; @@ -117,7 +117,7 @@ private Map generateFreemakeTemplateData(String jsonKeyValuePair value = httpServletRequest.getParameter(value); break; case PATH_PARAM: - value = GeneralUtils.splitContextPath(httpServletRequest.getContextPath())[Integer.parseInt(value)]; + value = extractPathParam(httpServletRequest,value); break; } templateData.put(key, value); @@ -126,6 +126,11 @@ private Map generateFreemakeTemplateData(String jsonKeyValuePair return templateData; } + private String extractPathParam(HttpServletRequest httpServletRequest, String key) { + Map paramsMap = (Map) httpServletRequest.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE); + return (String) paramsMap.get(key); + } + private String getTemplateDataAsAString(Map templateData) { StringBuilder stringBuilder = new StringBuilder();