[java-opensaml COMMIT] in /trunk/opensaml-saml-impl/src: main/java/org/opensaml/saml/metadata/resolver/index/impl/Met...

noreply at shibboleth.net noreply at shibboleth.net
Thu Oct 6 20:56:46 EDT 2016


Author: putmanb
Date: Thu Oct  6 20:56:46 2016
New Revision: 4522

URL: http://svn.shibboleth.net/view/java-opensaml?rev=4522&view=rev
Log:
Fix path segment trimming issue related to OSJ-129.  Produce additional path variants with trailing slash included.

Modified:
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexSupport.java
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/EndpointMetadataIndexTest.java
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexSupportTest.java

Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexSupport.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexSupport.java?rev=4522&r1=4521&r2=4522&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexSupport.java	(original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexSupport.java	Thu Oct  6 20:56:46 2016
@@ -20,6 +20,7 @@
 import java.net.MalformedURLException;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 
 import net.shibboleth.utilities.java.support.net.SimpleURLCanonicalizer;
 import net.shibboleth.utilities.java.support.net.URLBuilder;
@@ -65,22 +66,33 @@
      * The input should be the path only, with no query or fragment.
      * </p>
      * 
+     * <p>
+     * Paths ending in "/" return the input with the trailing slash omitted, except for the
+     * special case of input == "/", which returns null.
+     * Paths not ending in "/" return the input with the right-most
+     * segment removed, and including a trailing slash.
+     * </p>
+     * 
      * @param input the path to evaluate
-     * @return the trimmed path
+     * @return the trimmed path, or null
      */
-    public static String trimURLPathSegment(String input) {
+    @Nullable public static String trimURLPathSegment(@Nullable final String input) {
         String path = StringSupport.trimOrNull(input);
         if (path == null || "/".equals(path)) {
             return null;
         } else {
-           int idx = path.lastIndexOf("/");
-           if (idx > 0) {
-               return path.substring(0, idx);
-           } else if (idx == 0) {
-               return "/";
-           } else {
-               return null;
-           }
+            int idx = path.lastIndexOf("/");
+            if (idx > 0) {
+                if (path.endsWith("/")) {
+                    return path.substring(0, idx);
+                } else {
+                    return path.substring(0, idx+1);
+                }
+            } else if (idx == 0) {
+                return "/";
+            } else {
+                return null;
+            }
         }
     }
 

Modified: trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/EndpointMetadataIndexTest.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/EndpointMetadataIndexTest.java?rev=4522&r1=4521&r2=4522&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/EndpointMetadataIndexTest.java	(original)
+++ trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/EndpointMetadataIndexTest.java	Thu Oct  6 20:56:46 2016
@@ -150,15 +150,21 @@
         criteriaSet.add(new StartsWithLocationCriterion());
         keys = metadataIndex.generateKeys(criteriaSet);
         Assert.assertNotNull(keys);
-        Assert.assertEquals(keys.size(), 7);
+        Assert.assertEquals(keys.size(), 10);
         Assert.assertTrue(keys.contains(new EndpointMetadataIndex.EndpointMetadataIndexKey(SPSSODescriptor.DEFAULT_ELEMENT_NAME, AssertionConsumerService.DEFAULT_ELEMENT_NAME, 
                 "https://www.example.com/cas/someEndpoint1/foo/bar/", false)));
         Assert.assertTrue(keys.contains(new EndpointMetadataIndex.EndpointMetadataIndexKey(SPSSODescriptor.DEFAULT_ELEMENT_NAME, AssertionConsumerService.DEFAULT_ELEMENT_NAME, 
                 "https://www.example.com/cas/someEndpoint1/foo/bar", false)));
         Assert.assertTrue(keys.contains(new EndpointMetadataIndex.EndpointMetadataIndexKey(SPSSODescriptor.DEFAULT_ELEMENT_NAME, AssertionConsumerService.DEFAULT_ELEMENT_NAME, 
+                "https://www.example.com/cas/someEndpoint1/foo/", false)));
+        Assert.assertTrue(keys.contains(new EndpointMetadataIndex.EndpointMetadataIndexKey(SPSSODescriptor.DEFAULT_ELEMENT_NAME, AssertionConsumerService.DEFAULT_ELEMENT_NAME, 
                 "https://www.example.com/cas/someEndpoint1/foo", false)));

[... 29 lines stripped ...]


More information about the commits mailing list