[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