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

noreply at shibboleth.net noreply at shibboleth.net
Tue Oct 4 19:09:52 EDT 2016


Author: putmanb
Date: Tue Oct  4 19:09:52 2016
New Revision: 4510

URL: http://svn.shibboleth.net/view/java-opensaml?rev=4510&view=rev
Log:
More work on OSJ-130: Create metadata index impl for SAML artifacts

Add indexing support for artifact source location.

Modified:
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/SAMLArtifactMetadataIndex.java
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/SAMLArtifactMetadataIndexTest.java

Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/SAMLArtifactMetadataIndex.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/SAMLArtifactMetadataIndex.java?rev=4510&r1=4509&r2=4510&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/SAMLArtifactMetadataIndex.java	(original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/SAMLArtifactMetadataIndex.java	Tue Oct  4 19:09:52 2016
@@ -18,8 +18,10 @@
 package org.opensaml.saml.metadata.resolver.index.impl;
 
 import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashSet;
@@ -40,20 +42,25 @@
 import org.opensaml.saml.ext.saml1md.SourceID;
 import org.opensaml.saml.metadata.resolver.index.MetadataIndex;
 import org.opensaml.saml.metadata.resolver.index.MetadataIndexKey;
+import org.opensaml.saml.saml2.metadata.ArtifactResolutionService;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.opensaml.saml.saml2.metadata.Extensions;
 import org.opensaml.saml.saml2.metadata.RoleDescriptor;
+import org.opensaml.saml.saml2.metadata.SSODescriptor;
 import org.opensaml.security.crypto.JCAConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Function;
 import com.google.common.base.MoreObjects;
+import com.google.common.base.Predicates;
+import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
 
 import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.collection.LazySet;
 import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.utilities.java.support.net.SimpleURLCanonicalizer;
 import net.shibboleth.utilities.java.support.primitive.StringSupport;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
 
@@ -73,14 +80,15 @@
      * <ul>
      *   <li>{@link EntityIDToSHA1SourceIDIndexingFunction}</li>
      *   <li>{@link SourceIDExtensionIndexingFunction}</li>
+     *   <li>{@link SourceLocationIndexingFunction}</li>
      * </ul>
      * </p>
      */
     public SAMLArtifactMetadataIndex() {
         this(Lists.<Function<EntityDescriptor, Set<MetadataIndexKey>>>newArrayList(
                 new EntityIDToSHA1SourceIDIndexingFunction(),
-                new SourceIDExtensionIndexingFunction()
-                //TODO add source location indexing function when implemented
+                new SourceIDExtensionIndexingFunction(),
+                new SourceLocationIndexingFunction()
                 ));
     }
     
@@ -91,8 +99,11 @@
      */
     public SAMLArtifactMetadataIndex(
             @Nonnull final List<Function<EntityDescriptor, Set<MetadataIndexKey>>> descriptorIndexingFunctions) {
-        indexingFunctions = Constraint.isNotNull(descriptorIndexingFunctions, 
-                "EntityDescriptor indexing functions list may not be null");
+        indexingFunctions = new ArrayList<>(Collections2.filter(
+                Constraint.isNotNull(descriptorIndexingFunctions, 
+                        "EntityDescriptor indexing functions list may not be null"),
+                Predicates.notNull()));
+        Constraint.isNotEmpty(indexingFunctions, "EntityDescriptor indexing functions list may not be empty");
     }
 
     /** {@inheritDoc} */
@@ -122,7 +133,8 @@
             }
             
             if (artifact instanceof SAMLSourceLocationArtifact) {
-                //TODO can reuse Endpoint index key from EndpointMetadataIndex, or need new key type?
+                results.add(new ArtifactSourceLocationMetadataIndexKey(
+                        ((SAMLSourceLocationArtifact)artifact).getSourceLocation()));
             }
             
             return results;
@@ -155,11 +167,9 @@
             try {
                 MessageDigest sha1Digester = MessageDigest.getInstance(JCAConstants.DIGEST_SHA1);
                 byte[] sourceID = sha1Digester.digest(entityID.getBytes("UTF-8"));
-                if (log.isTraceEnabled()) {
-                    log.trace("For entityID '{}' produced artifact SourceID index value '{}'", 

[... 410 lines stripped ...]


More information about the commits mailing list