Skip to content

Commit

Permalink
[SHIBUI-570]
Browse files Browse the repository at this point in the history
Removed Batch resolver delegate.
Added Refilterable interface.
Implemented interface where appropriate.
Added initialization for metadataFilterChain.

Saving filters is much speedier now for these resolver types.
  • Loading branch information
Bill Smith committed Sep 11, 2018
1 parent c37f890 commit 1350872
Show file tree
Hide file tree
Showing 5 changed files with 39 additions and 39 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,35 +8,27 @@
import org.apache.http.impl.client.HttpClients;
import org.apache.lucene.index.IndexWriter;
import org.joda.time.DateTime;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.io.UnmarshallingException;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterChain;
import org.opensaml.saml.metadata.resolver.impl.FileBackedHTTPMetadataResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import java.io.InputStream;
import java.time.Instant;

import static edu.internet2.tier.shibboleth.admin.util.DurationUtility.toMillis;

/**
* @author Bill Smith (wsmith@unicon.net)
*/
public class OpenSamlFileBackedHTTPMetadataResolver extends FileBackedHTTPMetadataResolver {
public class OpenSamlFileBackedHTTPMetadataResolver extends FileBackedHTTPMetadataResolver implements Refilterable {

private static final Logger logger = LoggerFactory.getLogger(OpenSamlFileBackedHTTPMetadataResolver.class);

private static final long MILLISECONDS_IN_ONE_SECOND = 1000;

private IndexWriter indexWriter;
private FileBackedHttpMetadataResolver sourceResolver;

private OpenSamlMetadataResolverDelegate delegate;
private OpenSamlBatchMetadataResolverDelegate batchDelegate;

public OpenSamlFileBackedHTTPMetadataResolver(ParserPool parserPool,
IndexWriter indexWriter,
Expand All @@ -45,7 +37,6 @@ public OpenSamlFileBackedHTTPMetadataResolver(ParserPool parserPool,
this.indexWriter = indexWriter;
this.sourceResolver = sourceResolver;
this.delegate = new OpenSamlMetadataResolverDelegate();
this.batchDelegate = new OpenSamlBatchMetadataResolverDelegate();

this.setId(sourceResolver.getResourceId());

Expand All @@ -58,6 +49,8 @@ public OpenSamlFileBackedHTTPMetadataResolver(ParserPool parserPool,
this.setBackupFileInitNextRefreshDelay(toMillis(sourceResolver.getBackupFileInitNextRefreshDelay()));
this.setInitializeFromBackupFile(sourceResolver.getInitializeFromBackupFile());

this.setMetadataFilter(new MetadataFilterChain());

//TODO: Where does this get set in OpenSAML land?
// sourceResolver.getMetadataURL();
}
Expand All @@ -84,9 +77,12 @@ protected void initMetadataResolver() throws ComponentInitializationException {
indexWriter);
}

/**
* {@inheritDoc}
*/
public void refilter() {
try {
batchDelegate.refilter(this.getBackingStore(), filterMetadata(getCachedOriginalMetadata()));
this.getBackingStore().setCachedFilteredMetadata(filterMetadata(getCachedOriginalMetadata()));
} catch (FilterException e) {
logger.error("An error occurred while attempting to filter metadata!", e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.apache.lucene.index.IndexWriter;
import org.joda.time.DateTime;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterChain;
import org.opensaml.saml.metadata.resolver.impl.FilesystemMetadataResolver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand All @@ -16,13 +17,13 @@
/**
* @author Bill Smith (wsmith@unicon.net)
*/
public class OpenSamlFilesystemMetadataResolver extends FilesystemMetadataResolver {
public class OpenSamlFilesystemMetadataResolver extends FilesystemMetadataResolver implements Refilterable {

private static final Logger logger = LoggerFactory.getLogger(OpenSamlFilesystemMetadataResolver.class);

private IndexWriter indexWriter;
private edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.FilesystemMetadataResolver sourceResolver;
private OpenSamlMetadataResolverDelegate delegate;
private OpenSamlBatchMetadataResolverDelegate batchDelegate;

public OpenSamlFilesystemMetadataResolver(ParserPool parserPool,
IndexWriter indexWriter,
Expand All @@ -32,12 +33,13 @@ public OpenSamlFilesystemMetadataResolver(ParserPool parserPool,
this.indexWriter = indexWriter;
this.sourceResolver = sourceResolver;
this.delegate = new OpenSamlMetadataResolverDelegate();
this.batchDelegate = new OpenSamlBatchMetadataResolverDelegate();

this.setId(sourceResolver.getResourceId());

OpenSamlMetadataResolverConstructorHelper.updateOpenSamlMetadataResolverFromReloadableMetadataResolverAttributes(
this, sourceResolver.getReloadableMetadataResolverAttributes(), parserPool);

this.setMetadataFilter(new MetadataFilterChain());
}

// TODO: this is still probably not the best way to do this?
Expand All @@ -56,9 +58,12 @@ protected void initMetadataResolver() throws ComponentInitializationException {
indexWriter);
}

/**
* {@inheritDoc}
*/
public void refilter() {
try {
batchDelegate.refilter(this.getBackingStore(), filterMetadata(getCachedOriginalMetadata()));
this.getBackingStore().setCachedFilteredMetadata(filterMetadata(getCachedOriginalMetadata()));
} catch (FilterException e) {
logger.error("An error occurred while attempting to filter metadata!", e);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@
/**
* @author Bill Smith (wsmith@unicon.net)
*/
public class OpenSamlResourceBackedMetadataResolver extends ResourceBackedMetadataResolver {
public class OpenSamlResourceBackedMetadataResolver extends ResourceBackedMetadataResolver implements Refilterable {

private static final Logger logger = LoggerFactory.getLogger(OpenSamlResourceBackedMetadataResolver.class);

private IndexWriter indexWriter;
private edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.ResourceBackedMetadataResolver sourceResolver;
private OpenSamlMetadataResolverDelegate delegate;
private OpenSamlBatchMetadataResolverDelegate batchDelegate;

public OpenSamlResourceBackedMetadataResolver(ParserPool parserPool,
IndexWriter indexWriter,
Expand All @@ -33,7 +33,6 @@ public OpenSamlResourceBackedMetadataResolver(ParserPool parserPool,
this.indexWriter = indexWriter;
this.sourceResolver = sourceResolver;
this.delegate = new OpenSamlMetadataResolverDelegate();
this.batchDelegate = new OpenSamlBatchMetadataResolverDelegate();

this.setId(sourceResolver.getResourceId());

Expand All @@ -60,9 +59,12 @@ protected void initMetadataResolver() throws ComponentInitializationException {
indexWriter);
}

/**
* {@inheritDoc}
*/
public void refilter() {
try {
batchDelegate.refilter(this.getBackingStore(), filterMetadata(getCachedOriginalMetadata()));
this.getBackingStore().setCachedFilteredMetadata(filterMetadata(getCachedOriginalMetadata()));
} catch (FilterException e) {
logger.error("An error occurred while attempting to filter metadata!", e);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package edu.internet2.tier.shibboleth.admin.ui.domain.resolvers.opensaml;

/**
* Indicates that the resolver implementing this interface is a resolver that allows for its metadata to be
* filtered multiple times.
*
* @author Bill Smith (wsmith@unicon.net)
*/
public interface Refilterable {

/**
* Reapply this resolver's filters to its cached, unfiltered metadata, and set the result back to its cached,
* filtered metadata.
*/
void refilter();
}

0 comments on commit 1350872

Please sign in to comment.