[java-opensaml] 01/02: Add de-indexing support to MetadataIndexManager.
Brent Putman
putmanb at georgetown.edu
Mon Oct 1 18:09:28 EDT 2018
This is an automated email from the git hooks/post-receive script.
putmanb pushed a commit to branch master
in repository java-opensaml.
View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=c983887c2b2fcb56413ace481e81e4688d1bb89e
commit c983887c2b2fcb56413ace481e81e4688d1bb89e
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Tue Sep 25 19:38:06 2018 -0400
Add de-indexing support to MetadataIndexManager.
---
.../resolver/index/impl/MetadataIndexManager.java | 24 +++++++
.../index/impl/MetadataIndexManagerTest.java | 81 ++++++++++++++++++++++
2 files changed, 105 insertions(+)
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManager.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManager.java
index dd09b31..2779142 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManager.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManager.java
@@ -181,6 +181,30 @@ public class MetadataIndexManager<T> {
}
}
+ /**
+ * Remove from the index the specified {@link EntityDescriptor} based on the indexes currently held.
+ *
+ * @param descriptor the entity descriptor to index
+ */
+ public void deindexEntityDescriptor(@Nonnull final EntityDescriptor descriptor) {
+ final T item = entityDescriptorFunction.apply(descriptor);
+ if (item != null) {
+ for (final MetadataIndex index : indexes.keySet()) {
+ final Set<MetadataIndexKey> keys = index.generateKeys(descriptor);
+ if (keys != null && !keys.isEmpty()) {
+ final MetadataIndexStore<T> store = getStore(index);
+ for (final MetadataIndexKey key : keys) {
+ log.trace("De-indexing metadata: index '{}', key '{}', data item '{}'",
+ index, key, item);
+ store.remove(key, item);
+ }
+ }
+ }
+ } else {
+ log.trace("Unable to extract indexed data item from EntityDescriptor");
+ }
+ }
+
/** Extraction function which simply returns the input {@link EntityDescriptor}. */
public static class IdentityExtractionFunction implements Function<EntityDescriptor, EntityDescriptor> {
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManagerTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManagerTest.java
index f6ae8e9..4a15ea3 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManagerTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/index/impl/MetadataIndexManagerTest.java
@@ -132,6 +132,52 @@ public class MetadataIndexManagerTest extends XMLObjectBaseTestCase {
Assert.assertFalse(result.get().isEmpty());
Assert.assertEquals(result.get().size(), 1);
Assert.assertTrue(result.get().contains(c));
+
+ // Now test de-indexing
+ manager.deindexEntityDescriptor(a);
+
+ criteriaSet.clear();
+ criteriaSet.add(critAEntity);
+ result = manager.lookupIndexedItems(criteriaSet);
+ Assert.assertTrue(result.isPresent());
+ Assert.assertTrue(result.get().isEmpty());
+
+ criteriaSet.clear();
+ criteriaSet.add(critBEntity);
+ result = manager.lookupIndexedItems(criteriaSet);
+ Assert.assertTrue(result.isPresent());
+ Assert.assertFalse(result.get().isEmpty());
+ Assert.assertEquals(result.get().size(), 1);
+ Assert.assertTrue(result.get().contains(b));
+
+ criteriaSet.clear();
+ criteriaSet.add(critCEntity);
+ result = manager.lookupIndexedItems(criteriaSet);
+ Assert.assertTrue(result.isPresent());
+ Assert.assertFalse(result.get().isEmpty());
+ Assert.assertEquals(result.get().size(), 1);
+ Assert.assertTrue(result.get().contains(c));
+
+ manager.deindexEntityDescriptor(b);
+ manager.deindexEntityDescriptor(c);
+
+ criteriaSet.clear();
+ criteriaSet.add(critAEntity);
+ result = manager.lookupIndexedItems(criteriaSet);
+ Assert.assertTrue(result.isPresent());
+ Assert.assertTrue(result.get().isEmpty());
+
+ criteriaSet.clear();
+ criteriaSet.add(critBEntity);
+ result = manager.lookupIndexedItems(criteriaSet);
+ Assert.assertTrue(result.isPresent());
+ Assert.assertTrue(result.get().isEmpty());
+
+ criteriaSet.clear();
+ criteriaSet.add(critCEntity);
+ result = manager.lookupIndexedItems(criteriaSet);
+ Assert.assertTrue(result.isPresent());
+ Assert.assertTrue(result.get().isEmpty());
}
@Test
@@ -181,6 +227,41 @@ public class MetadataIndexManagerTest extends XMLObjectBaseTestCase {
Assert.assertTrue(result.get().contains(b));
Assert.assertTrue(result.get().contains(c));
+ // Now test de-indexing
+ manager.deindexEntityDescriptor(a);
+
+ criteriaSet.clear();
+ criteriaSet.add(roleCritSP);
+ result = manager.lookupIndexedItems(criteriaSet);
+ Assert.assertTrue(result.isPresent());
+ Assert.assertFalse(result.get().isEmpty());
+ Assert.assertEquals(result.get().size(), 1);
+ Assert.assertTrue(result.get().contains(b));
+
+ criteriaSet.clear();
+ criteriaSet.add(roleCritIDP);
+ result = manager.lookupIndexedItems(criteriaSet);
+ Assert.assertTrue(result.isPresent());
+ Assert.assertFalse(result.get().isEmpty());
+ Assert.assertEquals(result.get().size(), 2);
+ Assert.assertTrue(result.get().contains(b));
+ Assert.assertTrue(result.get().contains(c));
+
+ manager.deindexEntityDescriptor(b);
+
+ criteriaSet.clear();
+ criteriaSet.add(roleCritSP);
+ result = manager.lookupIndexedItems(criteriaSet);
+ Assert.assertTrue(result.isPresent());
+ Assert.assertTrue(result.get().isEmpty());
+
+ criteriaSet.clear();
+ criteriaSet.add(roleCritIDP);
+ result = manager.lookupIndexedItems(criteriaSet);
+ Assert.assertTrue(result.isPresent());
+ Assert.assertFalse(result.get().isEmpty());
+ Assert.assertEquals(result.get().size(), 1);
+ Assert.assertTrue(result.get().contains(c));
}
@Test
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list