[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
Wed Jun 1 15:55:29 EDT 2016


Author: putmanb
Date: Wed Jun  1 15:55:29 2016
New Revision: 4460

URL: http://svn.shibboleth.net/view/java-opensaml?rev=4460&view=rev
Log:
OSJ-128: Add support for secondary indexes to metadata resolvers

Change impl as discussed in the issue such that the results from an individual MetadataIndex
are intersected, rather than unioned, with the results of other MetadataIndexes.

Added:
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/ConstantEntityDescriptorFunction.java   (with props)
Modified:
    trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManager.java
    trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManagerTest.java

Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManager.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManager.java?rev=4460&r1=4459&r2=4460&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManager.java	(original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManager.java	Wed Jun  1 15:55:29 2016
@@ -17,6 +17,7 @@
 
 package org.opensaml.saml.metadata.resolver.index.impl;
 
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
@@ -28,6 +29,7 @@
 import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
 import net.shibboleth.utilities.java.support.annotation.constraint.NotLive;
 import net.shibboleth.utilities.java.support.annotation.constraint.Unmodifiable;
+import net.shibboleth.utilities.java.support.collection.LazySet;
 import net.shibboleth.utilities.java.support.logic.Constraint;
 import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
 
@@ -101,10 +103,22 @@
         HashSet<EntityDescriptor> descriptors = new HashSet<>();
         for (MetadataIndex index : indexes.keySet()) {
             Set<MetadataIndexKey> keys = index.generateKeys(criteria);
-            if (keys != null) {
+            if (keys != null && !keys.isEmpty()) {
+                LazySet<EntityDescriptor> indexResult = new LazySet<>();
                 MetadataIndexStore indexStore = indexes.get(index);
                 for (MetadataIndexKey key : keys) {
-                    descriptors.addAll(indexStore.lookup(key));
+                    indexResult.addAll(indexStore.lookup(key));
+                }
+                log.trace("MetadataIndex '{}' produced results: {}", index, indexResult);
+                if (indexResult.isEmpty()) {
+                    log.trace("MetadataIndex '{}' produced empty results, " 
+                            + "terminating early and returning empty result set", index);
+                    return Collections.emptySet();
+                }
+                if (descriptors.isEmpty()) {
+                    descriptors.addAll(indexResult);
+                } else {
+                    descriptors.retainAll(indexResult);
                 }
             }
         }
@@ -119,9 +133,11 @@
     public void indexEntityDescriptor(@Nonnull final EntityDescriptor descriptor) {
         for (MetadataIndex index : indexes.keySet()) {
             Set<MetadataIndexKey> keys = index.generateKeys(descriptor);
-            if (keys != null) {
+            if (keys != null && !keys.isEmpty()) {
                 MetadataIndexStore store = indexes.get(index);
                 for (MetadataIndexKey key : keys) {
+                    log.trace("Indexing metadata: index '{}', key '{}', entity descriptor '{}'", 
+                            index, key, descriptor);
                     store.add(key, descriptor);
                 }
             }

Modified: trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManagerTest.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManagerTest.java?rev=4460&r1=4459&r2=4460&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManagerTest.java	(original)
+++ trunk/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManagerTest.java	Wed Jun  1 15:55:29 2016
@@ -20,15 +20,21 @@
 import java.util.Collections;
 import java.util.Set;
 
-import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
-
 import org.opensaml.core.xml.XMLObjectBaseTestCase;
 import org.opensaml.core.xml.util.XMLObjectSupport;
+import org.opensaml.saml.criterion.EntityRoleCriterion;
 import org.opensaml.saml.metadata.resolver.index.MetadataIndex;

[... 258 lines stripped ...]


More information about the commits mailing list