From c969919173455e8e05e8d298429439f928c69b3b Mon Sep 17 00:00:00 2001 From: Bill Smith Date: Wed, 15 Aug 2018 09:42:40 -0700 Subject: [PATCH] [SHIBUI-723] Replaced LuceneMetadataResolverService with an OpenSaml Metadata Resolver delegate. --- .../LuceneMetadataResolverService.groovy | 39 --------------- ...penSamlFileBackedHTTPMetadataResolver.java | 13 +++-- .../OpenSamlFilesystemMetadataResolver.java | 12 ++--- ...tionDrivenDynamicHTTPMetadataResolver.java | 12 ++--- .../OpenSamlLocalDynamicMetadataResolver.java | 12 ++--- .../OpenSamlMetadataResolverDelegate.java | 49 +++++++++++++++++++ ...penSamlResourceBackedMetadataResolver.java | 12 ++--- .../MetadataResolverConverterServiceImpl.java | 10 +--- 8 files changed, 77 insertions(+), 82 deletions(-) delete mode 100644 backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/LuceneMetadataResolverService.groovy create mode 100644 backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlMetadataResolverDelegate.java diff --git a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/LuceneMetadataResolverService.groovy b/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/LuceneMetadataResolverService.groovy deleted file mode 100644 index dd59b669c..000000000 --- a/backend/src/main/groovy/edu/internet2/tier/shibboleth/admin/ui/service/LuceneMetadataResolverService.groovy +++ /dev/null @@ -1,39 +0,0 @@ -package edu.internet2.tier.shibboleth.admin.ui.service - -import net.shibboleth.utilities.java.support.component.ComponentInitializationException -import org.apache.lucene.document.Document -import org.apache.lucene.document.Field -import org.apache.lucene.document.StringField -import org.apache.lucene.document.TextField -import org.apache.lucene.index.IndexWriter -import org.opensaml.saml.metadata.resolver.impl.AbstractMetadataResolver -import org.slf4j.Logger -import org.slf4j.LoggerFactory -import org.springframework.stereotype.Service - -/** - * @author Bill Smith (wsmith@unicon.net) - */ -@Service -class LuceneMetadataResolverService { - private static final Logger logger = LoggerFactory.getLogger(LuceneMetadataResolverService.class) - - void addIndexedDescriptorsFromBackingStore(AbstractMetadataResolver.EntityBackingStore backingStore, String resourceId, IndexWriter indexWriter) { - for (String entityId : backingStore.getIndexedDescriptors().keySet()) { - Document document = new Document() - document.add(new StringField("id", entityId, Field.Store.YES)) - document.add(new TextField( "content", entityId, Field.Store.YES)) // TODO: change entityId to be content of entity descriptor block - document.add(new StringField("tag", resourceId, Field.Store.YES)) - try { - indexWriter.addDocument(document) - } catch (IOException e) { - logger.error(e.getMessage(), e) - } - } - try { - indexWriter.commit() - } catch (IOException e) { - throw new ComponentInitializationException(e) - } - } -} diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFileBackedHTTPMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFileBackedHTTPMetadataResolver.java index d40d7730e..58da65cb8 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFileBackedHTTPMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFileBackedHTTPMetadataResolver.java @@ -1,7 +1,6 @@ package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml; import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FileBackedHttpMetadataResolver; -import edu.internet2.tier.shibboleth.admin.ui.service.LuceneMetadataResolverService; import net.shibboleth.utilities.java.support.component.ComponentInitializationException; import net.shibboleth.utilities.java.support.resolver.ResolverException; import org.apache.http.HttpResponse; @@ -17,16 +16,16 @@ */ public class OpenSamlFileBackedHTTPMetadataResolver extends FileBackedHTTPMetadataResolver { private IndexWriter indexWriter; - private LuceneMetadataResolverService luceneMetadataResolverService; private FileBackedHttpMetadataResolver sourceResolver; + private OpenSamlMetadataResolverDelegate delegate; + public OpenSamlFileBackedHTTPMetadataResolver(IndexWriter indexWriter, - LuceneMetadataResolverService luceneMetadataResolverService, FileBackedHttpMetadataResolver sourceResolver) throws ResolverException { super(HttpClients.createMinimal(), sourceResolver.getMetadataURL(), sourceResolver.getBackingFile()); this.indexWriter = indexWriter; - this.luceneMetadataResolverService = luceneMetadataResolverService; this.sourceResolver = sourceResolver; + this.delegate = new OpenSamlMetadataResolverDelegate(); OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromHttpMetadataResolverAttributes( this, sourceResolver.getHttpMetadataResolverAttributes()); @@ -58,8 +57,8 @@ protected void processConditionalRetrievalHeaders(HttpResponse response) { protected void initMetadataResolver() throws ComponentInitializationException { super.initMetadataResolver(); - luceneMetadataResolverService.addIndexedDescriptorsFromBackingStore(this.getBackingStore(), - this.sourceResolver.getResourceId(), - indexWriter); + delegate.addIndexedDescriptorsFromBackingStore(this.getBackingStore(), + this.sourceResolver.getResourceId(), + indexWriter); } } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFilesystemMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFilesystemMetadataResolver.java index e329e2b05..39b5ecca9 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFilesystemMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFilesystemMetadataResolver.java @@ -1,6 +1,5 @@ package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml; -import edu.internet2.tier.shibboleth.admin.ui.service.LuceneMetadataResolverService; import net.shibboleth.utilities.java.support.component.ComponentInitializationException; import net.shibboleth.utilities.java.support.resolver.ResolverException; import org.apache.lucene.index.IndexWriter; @@ -15,17 +14,16 @@ */ public class OpenSamlFilesystemMetadataResolver extends FilesystemMetadataResolver { private IndexWriter indexWriter; - private LuceneMetadataResolverService luceneMetadataResolverService; private edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FilesystemMetadataResolver sourceResolver; + private OpenSamlMetadataResolverDelegate delegate; public OpenSamlFilesystemMetadataResolver(File metadataFile, IndexWriter indexWriter, - LuceneMetadataResolverService luceneMetadataResolverService, edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FilesystemMetadataResolver sourceResolver) throws ResolverException { super(metadataFile); this.indexWriter = indexWriter; - this.luceneMetadataResolverService = luceneMetadataResolverService; this.sourceResolver = sourceResolver; + this.delegate = new OpenSamlMetadataResolverDelegate(); OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromReloadableMetadataResolverAttributes( this, sourceResolver.getReloadableMetadataResolverAttributes()); @@ -42,8 +40,8 @@ public DateTime getLastRefresh() { protected void initMetadataResolver() throws ComponentInitializationException { super.initMetadataResolver(); - luceneMetadataResolverService.addIndexedDescriptorsFromBackingStore(this.getBackingStore(), - this.sourceResolver.getResourceId(), - indexWriter); + delegate.addIndexedDescriptorsFromBackingStore(this.getBackingStore(), + this.sourceResolver.getResourceId(), + indexWriter); } } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFunctionDrivenDynamicHTTPMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFunctionDrivenDynamicHTTPMetadataResolver.java index a0f324ae3..077bb1671 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFunctionDrivenDynamicHTTPMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlFunctionDrivenDynamicHTTPMetadataResolver.java @@ -1,7 +1,6 @@ package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml; import edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.DynamicHttpMetadataResolver; -import edu.internet2.tier.shibboleth.admin.ui.service.LuceneMetadataResolverService; import net.shibboleth.utilities.java.support.component.ComponentInitializationException; import org.apache.http.impl.client.HttpClients; import org.apache.lucene.index.IndexWriter; @@ -12,16 +11,15 @@ */ public class OpenSamlFunctionDrivenDynamicHTTPMetadataResolver extends FunctionDrivenDynamicHTTPMetadataResolver { private IndexWriter indexWriter; - private LuceneMetadataResolverService luceneMetadataResolverService; private DynamicHttpMetadataResolver sourceResolver; + private OpenSamlMetadataResolverDelegate delegate; public OpenSamlFunctionDrivenDynamicHTTPMetadataResolver(IndexWriter indexWriter, - LuceneMetadataResolverService luceneMetadataResolverService, DynamicHttpMetadataResolver sourceResolver) { super(HttpClients.createMinimal()); this.indexWriter = indexWriter; - this.luceneMetadataResolverService = luceneMetadataResolverService; this.sourceResolver = sourceResolver; + this.delegate = new OpenSamlMetadataResolverDelegate(); OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromDynamicMetadataResolverAttributes( this, sourceResolver.getDynamicMetadataResolverAttributes()); @@ -41,8 +39,8 @@ public OpenSamlFunctionDrivenDynamicHTTPMetadataResolver(IndexWriter indexWriter protected void initMetadataResolver() throws ComponentInitializationException { super.initMetadataResolver(); - luceneMetadataResolverService.addIndexedDescriptorsFromBackingStore(this.getBackingStore(), - this.sourceResolver.getResourceId(), - indexWriter); + delegate.addIndexedDescriptorsFromBackingStore(this.getBackingStore(), + this.sourceResolver.getResourceId(), + indexWriter); } } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlLocalDynamicMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlLocalDynamicMetadataResolver.java index 41589e6a2..b693fa315 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlLocalDynamicMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlLocalDynamicMetadataResolver.java @@ -1,6 +1,5 @@ package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml; -import edu.internet2.tier.shibboleth.admin.ui.service.LuceneMetadataResolverService; import net.shibboleth.utilities.java.support.component.ComponentInitializationException; import org.apache.lucene.index.IndexWriter; import org.opensaml.core.xml.XMLObject; @@ -14,17 +13,16 @@ */ public class OpenSamlLocalDynamicMetadataResolver extends LocalDynamicMetadataResolver { private IndexWriter indexWriter; - private LuceneMetadataResolverService luceneMetadataResolverService; private edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.LocalDynamicMetadataResolver sourceResolver; + private OpenSamlMetadataResolverDelegate delegate; public OpenSamlLocalDynamicMetadataResolver(@Nonnull XMLObjectLoadSaveManager manager, IndexWriter indexWriter, - LuceneMetadataResolverService luceneMetadataResolverService, edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.LocalDynamicMetadataResolver sourceResolver) { super(manager); this.indexWriter = indexWriter; - this.luceneMetadataResolverService = luceneMetadataResolverService; this.sourceResolver = sourceResolver; + this.delegate = new OpenSamlMetadataResolverDelegate(); OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromDynamicMetadataResolverAttributes( this, sourceResolver.getDynamicMetadataResolverAttributes()); @@ -38,8 +36,8 @@ public OpenSamlLocalDynamicMetadataResolver(@Nonnull XMLObjectLoadSaveManager resolve(@Nullable CriteriaSet criteria) { + throw new UnsupportedOperationException("This method should not be called."); + } + + void addIndexedDescriptorsFromBackingStore(AbstractMetadataResolver.EntityBackingStore backingStore, String resourceId, IndexWriter indexWriter) throws ComponentInitializationException { + for (String entityId : backingStore.getIndexedDescriptors().keySet()) { + Document document = new Document(); + document.add(new StringField("id", entityId, Field.Store.YES)); + document.add(new TextField("content", entityId, Field.Store.YES)); // TODO: change entityId to be content of entity descriptor block + document.add(new StringField("tag", resourceId, Field.Store.YES)); + try { + indexWriter.addDocument(document); + } catch (IOException e) { + logger.error(e.getMessage(), e); + } + } + try { + indexWriter.commit(); + } catch (IOException e) { + throw new ComponentInitializationException(e); + } + } +} diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlResourceBackedMetadataResolver.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlResourceBackedMetadataResolver.java index a8b139804..d7b62236d 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlResourceBackedMetadataResolver.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/resolvers/opensaml/OpenSamlResourceBackedMetadataResolver.java @@ -1,6 +1,5 @@ package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml; -import edu.internet2.tier.shibboleth.admin.ui.service.LuceneMetadataResolverService; import net.shibboleth.utilities.java.support.component.ComponentInitializationException; import net.shibboleth.utilities.java.support.resource.Resource; import org.apache.lucene.index.IndexWriter; @@ -15,17 +14,16 @@ */ public class OpenSamlResourceBackedMetadataResolver extends ResourceBackedMetadataResolver { private IndexWriter indexWriter; - private LuceneMetadataResolverService luceneMetadataResolverService; private edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.ResourceBackedMetadataResolver sourceResolver; + private OpenSamlMetadataResolverDelegate delegate; public OpenSamlResourceBackedMetadataResolver(Resource resource, IndexWriter indexWriter, - LuceneMetadataResolverService luceneMetadataResolverService, edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.ResourceBackedMetadataResolver sourceResolver) throws IOException { super(resource); this.indexWriter = indexWriter; - this.luceneMetadataResolverService = luceneMetadataResolverService; this.sourceResolver = sourceResolver; + this.delegate = new OpenSamlMetadataResolverDelegate(); OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromReloadableMetadataResolverAttributes( this, sourceResolver.getReloadableMetadataResolverAttributes()); @@ -42,8 +40,8 @@ public DateTime getLastRefresh() { protected void initMetadataResolver() throws ComponentInitializationException { super.initMetadataResolver(); - luceneMetadataResolverService.addIndexedDescriptorsFromBackingStore(this.getBackingStore(), - this.sourceResolver.getResourceId(), - indexWriter); + delegate.addIndexedDescriptorsFromBackingStore(this.getBackingStore(), + this.sourceResolver.getResourceId(), + indexWriter); } } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/MetadataResolverConverterServiceImpl.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/MetadataResolverConverterServiceImpl.java index edca9fb7d..5773036c2 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/MetadataResolverConverterServiceImpl.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/service/MetadataResolverConverterServiceImpl.java @@ -32,21 +32,17 @@ public class MetadataResolverConverterServiceImpl implements MetadataResolverCon @Autowired IndexWriterService indexWriterService; - @Autowired - LuceneMetadataResolverService luceneMetadataResolverService; - private OpenSamlFunctionDrivenDynamicHTTPMetadataResolver convertToOpenSamlRepresentation(DynamicHttpMetadataResolver resolver) throws IOException { IndexWriter indexWriter = indexWriterService.getIndexWriter(resolver.getResourceId()); return new OpenSamlFunctionDrivenDynamicHTTPMetadataResolver(indexWriter, - luceneMetadataResolverService, resolver); } private OpenSamlFileBackedHTTPMetadataResolver convertToOpenSamlRepresentation(FileBackedHttpMetadataResolver resolver) throws IOException, ResolverException { IndexWriter indexWriter = indexWriterService.getIndexWriter(resolver.getResourceId()); - return new OpenSamlFileBackedHTTPMetadataResolver(indexWriter, luceneMetadataResolverService, resolver); + return new OpenSamlFileBackedHTTPMetadataResolver(indexWriter, resolver); } private OpenSamlFilesystemMetadataResolver convertToOpenSamlRepresentation(FilesystemMetadataResolver resolver) throws IOException, ResolverException { @@ -55,7 +51,6 @@ private OpenSamlFilesystemMetadataResolver convertToOpenSamlRepresentation(Files return new OpenSamlFilesystemMetadataResolver(metadataFile, indexWriter, - luceneMetadataResolverService, resolver); } @@ -65,7 +60,7 @@ private OpenSamlLocalDynamicMetadataResolver convertToOpenSamlRepresentation(Loc //TODO: This is an educated guess. XMLObjectLoadSaveManager manager = new FilesystemLoadSaveManager(resolver.getSourceDirectory()); - return new OpenSamlLocalDynamicMetadataResolver(manager, indexWriter, luceneMetadataResolverService, resolver); + return new OpenSamlLocalDynamicMetadataResolver(manager, indexWriter, resolver); } private OpenSamlResourceBackedMetadataResolver convertToOpenSamlRepresentation(ResourceBackedMetadataResolver resolver) throws IOException { @@ -85,7 +80,6 @@ private OpenSamlResourceBackedMetadataResolver convertToOpenSamlRepresentation(R return new OpenSamlResourceBackedMetadataResolver(resource, indexWriter, - luceneMetadataResolverService, resolver); }