[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