Author: pauls
Date: Tue Jul  4 14:11:34 2017
New Revision: 1800793

URL: http://svn.apache.org/viewvc?rev=1800793&view=rev
Log:
SLING-6996: Fix Root Mappings for Resource Resolution when sling:match contains 
a regex in the host part by double checking that we didn't match a regex on 
detecting hosts in patterns.

Modified:
    
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java
    
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntryTest.java

Modified: 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java?rev=1800793&r1=1800792&r2=1800793&view=diff
==============================================================================
--- 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java
 (original)
+++ 
sling/trunk/bundles/resourceresolver/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntry.java
 Tue Jul  4 14:11:34 2017
@@ -107,7 +107,10 @@ public class MapEntry implements Compara
         for (int i = 0; i < URL_WITH_PORT_MATCH.length; i++) {
             final Matcher m = URL_WITH_PORT_MATCH[i].matcher(uriPath);
             if (m.find()) {
-                return m.replaceAll(URL_WITH_PORT_REPLACEMENT[i]);
+               if (!isRegExp(m.replaceAll("$1$2")))
+               {
+                    return m.replaceAll(URL_WITH_PORT_REPLACEMENT[i]);
+               }
             }
         }
 

Modified: 
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntryTest.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntryTest.java?rev=1800793&r1=1800792&r2=1800793&view=diff
==============================================================================
--- 
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntryTest.java
 (original)
+++ 
sling/trunk/bundles/resourceresolver/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntryTest.java
 Tue Jul  4 14:11:34 2017
@@ -137,7 +137,14 @@ public class MapEntryTest {
             "gurk/sling.apache.org.456/");
         assertEqualUriPath("gurk/sling.apache.org.789/site/index.html",
             "gurk/sling.apache.org.789/site/index.html");
-
+        
+        // SLING-6996: test that regex pattern are accepted
+        assertEqualUriPath("http/localhost.\\d*", "http/localhost.\\d*");
+        assertEqualUriPath("http/localhost.\\d*/site/index.html", 
+                       "http/localhost.\\d*/site/index.html");
+        assertEqualUriPath("http/(.*)", "http/(.*)");
+        assertEqualUriPath("http/(.*)/site/index.html", 
+                       "http/(.*)/site/index.html");
     }
 
     @Test public void test_isRegExp() {


Reply via email to