Skip to content

Commit

Permalink
[SHIBUI-723]
Browse files Browse the repository at this point in the history
Replaced LuceneMetadataResolverService with an OpenSaml Metadata Resolver
delegate.
  • Loading branch information
Bill Smith committed Aug 15, 2018
1 parent 646d3e8 commit c969919
Show file tree
Hide file tree
Showing 8 changed files with 77 additions and 82 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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());
Expand Down Expand Up @@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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());
Expand All @@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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());
Expand All @@ -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);
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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<XMLObject> 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());
Expand All @@ -38,8 +36,8 @@ public OpenSamlLocalDynamicMetadataResolver(@Nonnull XMLObjectLoadSaveManager<XM
protected void initMetadataResolver() throws ComponentInitializationException {
super.initMetadataResolver();

luceneMetadataResolverService.addIndexedDescriptorsFromBackingStore(this.getBackingStore(),
this.sourceResolver.getResourceId(),
indexWriter);
delegate.addIndexedDescriptorsFromBackingStore(this.getBackingStore(),
this.sourceResolver.getResourceId(),
indexWriter);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml;

import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.resolver.CriteriaSet;
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.opensaml.saml.saml2.metadata.EntityDescriptor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.IOException;

/**
* @author Bill Smith (wsmith@unicon.net)
*/
public class OpenSamlMetadataResolverDelegate extends AbstractMetadataResolver {
private static final Logger logger = LoggerFactory.getLogger(OpenSamlMetadataResolverDelegate.class);

@Nonnull
@Override
public Iterable<EntityDescriptor> 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);
}
}
}
Original file line number Diff line number Diff line change
@@ -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;
Expand All @@ -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());
Expand All @@ -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);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -55,7 +51,6 @@ private OpenSamlFilesystemMetadataResolver convertToOpenSamlRepresentation(Files

return new OpenSamlFilesystemMetadataResolver(metadataFile,
indexWriter,
luceneMetadataResolverService,
resolver);
}

Expand All @@ -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 {
Expand All @@ -85,7 +80,6 @@ private OpenSamlResourceBackedMetadataResolver convertToOpenSamlRepresentation(R

return new OpenSamlResourceBackedMetadataResolver(resource,
indexWriter,
luceneMetadataResolverService,
resolver);
}

Expand Down

0 comments on commit c969919

Please sign in to comment.