You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by pa...@apache.org on 2018/01/19 20:22:15 UTC
svn commit: r1821706 -
/myfaces/core/branches/2.3.x/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMappingUtils.java
Author: paulnicolucci
Date: Fri Jan 19 20:22:14 2018
New Revision: 1821706
URL: http://svn.apache.org/viewvc?rev=1821706&view=rev
Log:
MYFACES-4191 : non-faces request fix
Modified:
myfaces/core/branches/2.3.x/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMappingUtils.java
Modified: myfaces/core/branches/2.3.x/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMappingUtils.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.3.x/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMappingUtils.java?rev=1821706&r1=1821705&r2=1821706&view=diff
==============================================================================
--- myfaces/core/branches/2.3.x/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMappingUtils.java (original)
+++ myfaces/core/branches/2.3.x/shared/src/main/java/org/apache/myfaces/shared/application/FacesServletMappingUtils.java Fri Jan 19 20:22:14 2018
@@ -151,56 +151,79 @@ public class FacesServletMappingUtils
Map<String, ? extends ServletRegistration> map = servletContext.getServletRegistrations();
if (map != null)
{
+ FacesServletMapping facesExtensionMapping = null;
+ FacesServletMapping facesPrefixMapping = null;
+ FacesServletMapping facesExactMapping = null;
+
for (Map.Entry<String, ? extends ServletRegistration> entry : map.entrySet())
{
try
{
+ Collection<String> mappings = entry.getValue().getMappings();
+
if (isFacesServlet(facesContext, (String)entry.getValue().getClassName()))
{
- Collection<String> mappings = entry.getValue().getMappings();
- FacesServletMapping extensionMapping = null;
- FacesServletMapping prefixMapping = null;
- FacesServletMapping exactMapping = null;
for (String mapping : mappings)
{
if (mapping.startsWith("*."))
{
// extension mapping, use it.
- extensionMapping = FacesServletMapping.createExtensionMapping(
+ facesExtensionMapping = FacesServletMapping.createExtensionMapping(
mapping.substring(1));
}
else if (mapping.startsWith("/") && mapping.endsWith("/*"))
{
// prefix mapping, use it.
- prefixMapping = FacesServletMapping.createPrefixMapping(
+ facesPrefixMapping = FacesServletMapping.createPrefixMapping(
mapping.substring(0, mapping.length()-2));
}
else if (allowExactMatch && mapping.startsWith("/") && mapping.equals(servletPath))
{
- exactMapping = FacesServletMapping.createPrefixMapping(servletPath);
+ facesExactMapping = FacesServletMapping.createPrefixMapping(servletPath);
}
- }
- // Choose exact mapping if preferred.
- if (allowExactMatch && exactMapping != null)
- {
- return exactMapping;
- }
- else if (prefixMapping != null)
- {
- return prefixMapping;
- }
- else if (extensionMapping != null)
- {
- return extensionMapping;
- }
+ }
}
+ else
+ {
+ //This is not a FacesServlet mapping. It could be a non-faces request
+ //Need to look for exact mapping to servletPath
+ String servletPrefixMapping = null;
+ for (String mapping : mappings)
+ {
+ if (mapping.startsWith("/") && mapping.endsWith("/*"))
+ {
+ mapping = mapping.substring(0, mapping.length()-2);
+ }
+ if (mapping.equals(servletPath))
+ {
+ return FacesServletMapping.createPrefixMapping(mapping);
+ }
+ }
+ }
}
catch (Exception ex)
{
//No op
}
}
- return FacesServletMapping.createPrefixMapping(servletPath);
+
+ // Choose exact mapping if preferred.
+ if (allowExactMatch && facesExactMapping != null)
+ {
+ return facesExactMapping;
+ }
+ else if (facesPrefixMapping != null)
+ {
+ return facesPrefixMapping;
+ }
+ else if (facesExtensionMapping != null)
+ {
+ return facesExtensionMapping;
+ }
+ else
+ {
+ return FacesServletMapping.createPrefixMapping(servletPath);
+ }
}
else
{