in plugin-core/plugin/src/main/groovy/grails/plugin/springsecurity/web/access/intercept/AnnotationFilterInvocationDefinition.groovy [86:149]
protected String determineUrl(FilterInvocation filterInvocation) {
HttpServletRequest request = filterInvocation.httpRequest
HttpServletResponse response = filterInvocation.httpResponse
String requestUrl = urlPathHelper.getRequestUri(request)
requestUrl = stripContextPath(requestUrl, request)
GrailsWebRequest existingRequest
try {
existingRequest = WebUtils.retrieveGrailsWebRequest()
}
catch (IllegalStateException e) {
if (request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE) == 404) {
ERROR404
}
else {
requestUrl
}
}
log.trace 'Requested url: {}', requestUrl
String url
try {
GrailsWebRequest grailsRequest = new GrailsWebRequest(request, response, servletContext)
WebUtils.storeGrailsWebRequest grailsRequest
Map<String, Object> savedParams = copyParams(grailsRequest)
UrlMappingInfo[] urlInfos = PluginReflectionUtils.matchAllUrlMappings(
urlMappingsHolder, requestUrl, grailsRequest, httpServletResponseExtension)
for (UrlMappingInfo mapping : urlInfos) {
if (mapping.redirectInfo) {
log.trace 'Mapping {} is a redirect', mapping
break
}
configureMapping mapping, grailsRequest, savedParams
url = findGrailsUrl(mapping)
if (url) {
break
}
}
}
finally {
if (existingRequest) {
WebUtils.storeGrailsWebRequest(existingRequest)
}
else {
WebUtils.clearGrailsWebRequest()
}
}
if (!StringUtils.hasLength(url)) {
// probably css/js/image
url = requestUrl
}
String finalUrl = lowercaseAndStripQuerystring(url)
log.trace 'Final url is {}', finalUrl
finalUrl
}