[java-opensaml] branch main updated: IDP-2116 - Add metrics for MetadataResolvers
Scott Cantor
cantor.2 at osu.edu
Tue May 23 15:43:20 UTC 2023
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch main
in repository java-opensaml.
View the commit online:
http://git.shibboleth.net/view/?p=java-opensaml.git;a=commit;h=a21b5b91894831f1c51e0c2b0f7ab3f959ace50e
The following commit(s) were added to refs/heads/main by this push:
new a21b5b918 IDP-2116 - Add metrics for MetadataResolvers
a21b5b918 is described below
commit a21b5b91894831f1c51e0c2b0f7ab3f959ace50e
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue May 23 11:43:16 2023 -0400
IDP-2116 - Add metrics for MetadataResolvers
https://shibboleth.atlassian.net/browse/IDP-2116
Add getType method to resolver and filter interfaces.
Add abstract base for filters.
---
.../resolver/ChainingMetadataResolver.java | 21 +++++++++++++
.../saml/metadata/resolver/MetadataResolver.java | 10 +++++++
.../resolver/filter/AbstractMetadataFilter.java | 35 ++++++++++++++--------
.../metadata/resolver/filter/MetadataFilter.java | 11 +++++++
.../resolver/filter/MetadataFilterChain.java | 8 ++---
.../resolver/filter/impl/AlgorithmFilter.java | 5 ++--
.../filter/impl/ByReferenceMetadataFilter.java | 3 +-
.../filter/impl/EntityAttributesFilter.java | 5 ++--
.../resolver/filter/impl/EntityRoleFilter.java | 4 +--
.../resolver/filter/impl/NameIDFormatFilter.java | 5 ++--
.../filter/impl/NodeProcessingMetadataFilter.java | 4 +--
.../resolver/filter/impl/PredicateFilter.java | 4 +--
.../filter/impl/RequiredValidUntilFilter.java | 4 +--
.../filter/impl/SchemaValidationFilter.java | 4 +--
.../filter/impl/SignatureValidationFilter.java | 4 +--
.../resolver/impl/AbstractMetadataResolver.java | 19 ++++++++++++
.../resolver/impl/CompositeMetadataResolver.java | 20 +++++++++++++
.../impl/FileBackedHTTPMetadataResolverTest.java | 4 +--
.../metadata/resolver/impl/MockFailureFilter.java | 4 +--
.../impl/PredicateRoleDescriptorResolverTest.java | 4 +++
20 files changed, 136 insertions(+), 42 deletions(-)
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ChainingMetadataResolver.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ChainingMetadataResolver.java
index 57a9f7846..48bc80341 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ChainingMetadataResolver.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/ChainingMetadataResolver.java
@@ -37,11 +37,13 @@ import org.opensaml.saml.saml2.metadata.EntityDescriptor;
import org.slf4j.Logger;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiableInitializableComponent;
import net.shibboleth.shared.primitive.LoggerFactory;
+import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
@@ -57,6 +59,9 @@ public class ChainingMetadataResolver extends AbstractIdentifiableInitializableC
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(ChainingMetadataResolver.class);
+ /** Resolver type. */
+ @Nullable @NotEmpty private String resolverType;
+
/** Registered resolvers. */
@Nonnull @NonnullElements private List<MetadataResolver> resolvers;
@@ -70,6 +75,22 @@ public class ChainingMetadataResolver extends AbstractIdentifiableInitializableC
public ChainingMetadataResolver() {
resolvers = CollectionSupport.emptyList();
detectDuplicateEntityIDs = DetectDuplicateEntityIDs.Off;
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @NotEmpty public String getType() {
+ return resolverType;
+ }
+
+ /**
+ * Sets the type of this resolver for reporting/logging.
+ *
+ * @param type type to set
+ *
+ * @since 5.0.0
+ */
+ public void setType(@Nullable @NotEmpty final String type) {
+ resolverType = StringSupport.trimOrNull(type);
}
/**
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/MetadataResolver.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/MetadataResolver.java
index 5a02eaf69..18277919e 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/MetadataResolver.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/MetadataResolver.java
@@ -19,6 +19,7 @@ package org.opensaml.saml.metadata.resolver;
import javax.annotation.Nullable;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.component.IdentifiedComponent;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.Resolver;
@@ -44,6 +45,15 @@ import org.opensaml.saml.saml2.metadata.EntityDescriptor;
*/
public interface MetadataResolver extends Resolver<EntityDescriptor, CriteriaSet>, IdentifiedComponent {
+ /**
+ * Gets the type of resolver for reporting or logging purposes.
+ *
+ * @return resolver type
+ *
+ * @since 5.0.0
+ */
+ @Nullable @NotEmpty String getType();
+
/**
* Gets whether the metadata returned by queries must be valid.
*
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/MockFailureFilter.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/filter/AbstractMetadataFilter.java
similarity index 52%
copy from opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/MockFailureFilter.java
copy to opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/filter/AbstractMetadataFilter.java
index 08e0e53b6..055e4852e 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/MockFailureFilter.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/filter/AbstractMetadataFilter.java
@@ -15,25 +15,36 @@
* limitations under the License.
*/
-package org.opensaml.saml.metadata.resolver.impl;
+package org.opensaml.saml.metadata.resolver.filter;
-import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.opensaml.core.xml.XMLObject;
-import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.component.AbstractInitializableComponent;
+import net.shibboleth.shared.primitive.StringSupport;
/**
- * Mock filter to test init failures.
+ * Abstract base class for {@link MetadataFilter}.
+ *
+ * @since 5.0.0
*/
-public class MockFailureFilter implements MetadataFilter {
+public abstract class AbstractMetadataFilter extends AbstractInitializableComponent implements MetadataFilter {
+ /** Filter type for logging/reporting. */
+ @Nullable @NotEmpty private String filterType;
+
/** {@inheritDoc} */
- @Nullable public XMLObject filter(@Nullable XMLObject metadata, @Nonnull final MetadataFilterContext context)
- throws FilterException {
- throw new FilterException("Something really terrible happened");
+ @Nullable @NotEmpty public String getType() {
+ return filterType;
+ }
+
+ /**
+ * Set filter type for reporting/logging.
+ *
+ * @param type filter type
+ */
+ public void setType(@Nullable @NotEmpty final String type) {
+ filterType = StringSupport.trimOrNull(type);
}
-}
+}
\ No newline at end of file
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/filter/MetadataFilter.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/filter/MetadataFilter.java
index 43dcc0d88..e470727d8 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/filter/MetadataFilter.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/filter/MetadataFilter.java
@@ -22,6 +22,8 @@ import javax.annotation.Nullable;
import org.opensaml.core.xml.XMLObject;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
+
/**
* A metadata filter is used to process a metadata document after it has been unmarshalled into an
* instance of {@link XMLObject}, either an {@link org.opensaml.saml.saml2.metadata.EntityDescriptor}
@@ -41,6 +43,15 @@ import org.opensaml.core.xml.XMLObject;
*/
public interface MetadataFilter {
+ /**
+ * Gets the type of filter for reporting or logging purposes.
+ *
+ * @return filter type
+ *
+ * @since 5.0.0
+ */
+ @Nullable @NotEmpty String getType();
+
/**
* Filters the given metadata, perhaps to remove elements that are not wanted.
*
diff --git a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/filter/MetadataFilterChain.java b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/filter/MetadataFilterChain.java
index f67099b90..3a3c46b31 100644
--- a/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/filter/MetadataFilterChain.java
+++ b/opensaml-saml-api/src/main/java/org/opensaml/saml/metadata/resolver/filter/MetadataFilterChain.java
@@ -35,11 +35,11 @@ import org.slf4j.Logger;
* A filter that allows the composition of {@link MetadataFilter}s. Filters will be executed on the given metadata
* document in the order they were added to the chain.
*/
-public class MetadataFilterChain implements MetadataFilter {
+public class MetadataFilterChain extends AbstractMetadataFilter {
/** Class logger. */
@Nonnull private Logger log = LoggerFactory.getLogger(MetadataFilterChain.class);
-
+
/** Registered filters. */
@Nonnull @NonnullElements private List<MetadataFilter> filters;
@@ -49,7 +49,7 @@ public class MetadataFilterChain implements MetadataFilter {
public MetadataFilterChain() {
filters = new ArrayList<>();
}
-
+
/** {@inheritDoc} */
@Override
@Nullable public final XMLObject filter(@Nullable final XMLObject xmlObject,
@@ -96,5 +96,5 @@ public class MetadataFilterChain implements MetadataFilter {
filters = new ArrayList<>(List.copyOf(newFilters));
}
-
+
}
\ No newline at end of file
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/AlgorithmFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/AlgorithmFilter.java
index 875dc3698..c75988da6 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/AlgorithmFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/AlgorithmFilter.java
@@ -36,8 +36,8 @@ import org.opensaml.core.xml.util.XMLObjectSupport;
import org.opensaml.saml.common.SAMLObjectBuilder;
import org.opensaml.saml.ext.saml2alg.DigestMethod;
import org.opensaml.saml.ext.saml2alg.SigningMethod;
+import org.opensaml.saml.metadata.resolver.filter.AbstractMetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
import org.opensaml.saml.saml2.metadata.EncryptionMethod;
import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
@@ -56,7 +56,6 @@ import com.google.common.collect.Multimap;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.collection.CollectionSupport;
-import net.shibboleth.shared.component.AbstractInitializableComponent;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -67,7 +66,7 @@ import net.shibboleth.shared.primitive.LoggerFactory;
* <p>The entities to annotate are identified with a {@link Predicate}, and multiple algorithms can be
* associated with each.</p>
*/
-public class AlgorithmFilter extends AbstractInitializableComponent implements MetadataFilter {
+public class AlgorithmFilter extends AbstractMetadataFilter {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(AlgorithmFilter.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/ByReferenceMetadataFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/ByReferenceMetadataFilter.java
index 85addf720..72fcfe25c 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/ByReferenceMetadataFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/ByReferenceMetadataFilter.java
@@ -25,6 +25,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opensaml.core.xml.XMLObject;
+import org.opensaml.saml.metadata.resolver.filter.AbstractMetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
@@ -46,7 +47,7 @@ import net.shibboleth.shared.primitive.StringSupport;
*
* @since 4.0.0
*/
-public class ByReferenceMetadataFilter implements MetadataFilter {
+public class ByReferenceMetadataFilter extends AbstractMetadataFilter {
/** Class logger. */
@Nonnull private Logger log = LoggerFactory.getLogger(ByReferenceMetadataFilter.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityAttributesFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityAttributesFilter.java
index 810b5acd6..40c268ebb 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityAttributesFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityAttributesFilter.java
@@ -36,8 +36,8 @@ import org.opensaml.core.xml.util.XMLObjectSupport;
import org.opensaml.saml.common.SAMLObject;
import org.opensaml.saml.common.SAMLObjectBuilder;
import org.opensaml.saml.ext.saml2mdattr.EntityAttributes;
+import org.opensaml.saml.metadata.resolver.filter.AbstractMetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
import org.opensaml.saml.saml2.core.Attribute;
import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
@@ -49,7 +49,6 @@ import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
-import net.shibboleth.shared.component.AbstractInitializableComponent;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -63,7 +62,7 @@ import net.shibboleth.shared.primitive.LoggerFactory;
* <p>As of 3.4.0, another predicate can be set to validate pre-existing extension content to better
* protect use cases of this component.</p>
*/
-public class EntityAttributesFilter extends AbstractInitializableComponent implements MetadataFilter {
+public class EntityAttributesFilter extends AbstractMetadataFilter {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(EntityAttributesFilter.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilter.java
index 853dbecfb..7bad3c25e 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/EntityRoleFilter.java
@@ -27,8 +27,8 @@ import javax.xml.namespace.QName;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.saml.common.xml.SAMLConstants;
+import org.opensaml.saml.metadata.resolver.filter.AbstractMetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
import org.opensaml.saml.saml2.metadata.EntityDescriptor;
@@ -55,7 +55,7 @@ import net.shibboleth.shared.primitive.LoggerFactory;
* well. If the root element of the metadata document is an entities descriptor it will never be removed, regardless of
* of whether it still contains entity descriptors.
*/
-public class EntityRoleFilter implements MetadataFilter {
+public class EntityRoleFilter extends AbstractMetadataFilter {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(EntityRoleFilter.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/NameIDFormatFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/NameIDFormatFilter.java
index 7d18e48c0..c0635429b 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/NameIDFormatFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/NameIDFormatFilter.java
@@ -30,8 +30,8 @@ import javax.annotation.Nullable;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.core.xml.config.XMLObjectProviderRegistrySupport;
import org.opensaml.saml.common.SAMLObjectBuilder;
+import org.opensaml.saml.metadata.resolver.filter.AbstractMetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
import org.opensaml.saml.saml2.metadata.AttributeAuthorityDescriptor;
import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
@@ -46,7 +46,6 @@ import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
-import net.shibboleth.shared.component.AbstractInitializableComponent;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
import net.shibboleth.shared.primitive.StringSupport;
@@ -58,7 +57,7 @@ import net.shibboleth.shared.primitive.StringSupport;
* The entities to annotate are identified with a {@link Predicate}, and multiple formats can be
* associated with each.
*/
-public class NameIDFormatFilter extends AbstractInitializableComponent implements MetadataFilter {
+public class NameIDFormatFilter extends AbstractMetadataFilter {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(NameIDFormatFilter.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/NodeProcessingMetadataFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/NodeProcessingMetadataFilter.java
index 52d9afa0c..8b48d4b20 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/NodeProcessingMetadataFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/NodeProcessingMetadataFilter.java
@@ -24,6 +24,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opensaml.core.xml.XMLObject;
+import org.opensaml.saml.metadata.resolver.filter.AbstractMetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
@@ -31,7 +32,6 @@ import org.opensaml.saml.metadata.resolver.filter.MetadataNodeProcessor;
import net.shibboleth.shared.annotation.constraint.Live;
import net.shibboleth.shared.collection.CollectionSupport;
-import net.shibboleth.shared.component.AbstractInitializableComponent;
import net.shibboleth.shared.logic.Constraint;
/**
@@ -39,7 +39,7 @@ import net.shibboleth.shared.logic.Constraint;
* metadata document tree. The node processors will be applied in the order of {@link List} provided by
* {@link #setNodeProcessors(List)}. The metadata document tree is traversed depth-first.
*/
-public class NodeProcessingMetadataFilter extends AbstractInitializableComponent implements MetadataFilter {
+public class NodeProcessingMetadataFilter extends AbstractMetadataFilter {
/** The ordered list of metadata node processors. */
@Nonnull private List<MetadataNodeProcessor> processors;
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/PredicateFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/PredicateFilter.java
index 8c0f6efa0..659c924d7 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/PredicateFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/PredicateFilter.java
@@ -26,8 +26,8 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opensaml.core.xml.XMLObject;
+import org.opensaml.saml.metadata.resolver.filter.AbstractMetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
import org.opensaml.saml.saml2.metadata.EntityDescriptor;
@@ -44,7 +44,7 @@ import net.shibboleth.shared.primitive.LoggerFactory;
* well. If the root element of the metadata document is an @link EntitiesDescriptor}, it will never be removed,
* regardless of of whether it still has children.</p>
*/
-public class PredicateFilter implements MetadataFilter {
+public class PredicateFilter extends AbstractMetadataFilter {
/** Whether matching means to include or exclude an entity. */
public enum Direction {
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/RequiredValidUntilFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/RequiredValidUntilFilter.java
index 3ecb1aada..4e5428795 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/RequiredValidUntilFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/RequiredValidUntilFilter.java
@@ -24,8 +24,8 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opensaml.core.xml.XMLObject;
+import org.opensaml.saml.metadata.resolver.filter.AbstractMetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
import org.opensaml.saml.saml2.metadata.EntityDescriptor;
@@ -41,7 +41,7 @@ import net.shibboleth.shared.primitive.LoggerFactory;
* A maximum validity interval of less than 1 means that no restriction is placed on the metadata's
* <code>validUntil</code> attribute.
*/
-public class RequiredValidUntilFilter implements MetadataFilter {
+public class RequiredValidUntilFilter extends AbstractMetadataFilter {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(RequiredValidUntilFilter.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SchemaValidationFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SchemaValidationFilter.java
index 82fb6ee84..f0647e031 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SchemaValidationFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SchemaValidationFilter.java
@@ -24,8 +24,8 @@ import javax.xml.validation.Validator;
import org.opensaml.core.xml.XMLObject;
import org.opensaml.saml.common.xml.SAMLSchemaBuilder;
+import org.opensaml.saml.metadata.resolver.filter.AbstractMetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
import org.slf4j.Logger;
import org.xml.sax.SAXException;
@@ -37,7 +37,7 @@ import net.shibboleth.shared.primitive.LoggerFactory;
/**
* A metadata filter that schema validates an incoming metadata file.
*/
-public class SchemaValidationFilter implements MetadataFilter {
+public class SchemaValidationFilter extends AbstractMetadataFilter {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(SchemaValidationFilter.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilter.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilter.java
index 608190fd2..1f8b0795f 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilter.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/filter/impl/SignatureValidationFilter.java
@@ -26,8 +26,8 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opensaml.core.xml.XMLObject;
+import org.opensaml.saml.metadata.resolver.filter.AbstractMetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
import org.opensaml.saml.metadata.resolver.filter.data.impl.MetadataSource;
import org.opensaml.saml.saml2.metadata.AffiliationDescriptor;
@@ -55,7 +55,7 @@ import net.shibboleth.shared.resolver.CriteriaSet;
/**
* A metadata filter that validates XML signatures.
*/
-public class SignatureValidationFilter implements MetadataFilter {
+public class SignatureValidationFilter extends AbstractMetadataFilter {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(SignatureValidationFilter.class);
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractMetadataResolver.java
index 41a52a8bc..bf66ca4f8 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/AbstractMetadataResolver.java
@@ -78,6 +78,9 @@ public abstract class AbstractMetadataResolver extends AbstractIdentifiableIniti
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(AbstractMetadataResolver.class);
+ /** Resolver type. */
+ @Nullable @NotEmpty private String resolverType;
+
/** Unmarshaller factory used to get an unmarshaller for the metadata DOM. */
@NonnullAfterInit private UnmarshallerFactory unmarshallerFactory;
@@ -124,6 +127,22 @@ public abstract class AbstractMetadataResolver extends AbstractIdentifiableIniti
useDefaultPredicateRegistry = true;
}
+ /** {@inheritDoc} */
+ @Nullable @NotEmpty public String getType() {
+ return resolverType;
+ }
+
+ /**
+ * Sets the type of this resolver for reporting/logging.
+ *
+ * @param type type to set
+ *
+ * @since 5.0.0
+ */
+ public void setType(@Nullable @NotEmpty final String type) {
+ resolverType = StringSupport.trimOrNull(type);
+ }
+
/** {@inheritDoc} */
@Override public boolean isRequireValidMetadata() {
return requireValidMetadata;
diff --git a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/CompositeMetadataResolver.java b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/CompositeMetadataResolver.java
index d4f0ebd2f..5fb6e1492 100644
--- a/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/CompositeMetadataResolver.java
+++ b/opensaml-saml-impl/src/main/java/org/opensaml/saml/metadata/resolver/impl/CompositeMetadataResolver.java
@@ -33,11 +33,13 @@ import org.opensaml.saml.saml2.metadata.EntityDescriptor;
import org.slf4j.Logger;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.annotation.constraint.NotLive;
import net.shibboleth.shared.annotation.constraint.Unmodifiable;
import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.AbstractIdentifiedInitializableComponent;
import net.shibboleth.shared.primitive.LoggerFactory;
+import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
@@ -55,6 +57,9 @@ public class CompositeMetadataResolver extends AbstractIdentifiedInitializableCo
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(CompositeMetadataResolver.class);
+ /** Resolver type. */
+ @Nullable @NotEmpty private String resolverType;
+
/** Resolvers composed by this resolver. */
@Nonnull @NonnullElements private List<MetadataResolver> resolvers;
@@ -90,6 +95,21 @@ public class CompositeMetadataResolver extends AbstractIdentifiedInitializableCo
}
}
+ /** {@inheritDoc} */
+ @Nullable @NotEmpty public String getType() {
+ return resolverType;
+ }
+
+ /**
+ * Sets the type of this resolver for reporting/logging.
+ *
+ * @param type type to set
+ *
+ * @since 5.0.0
+ */
+ public void setType(@Nullable @NotEmpty final String type) {
+ resolverType = StringSupport.trimOrNull(type); }
+
/** {@inheritDoc} */
public boolean isRequireValidMetadata() {
log.warn("Attempt to access unsupported requireValidMetadata property on ChainingMetadataResolver");
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/FileBackedHTTPMetadataResolverTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/FileBackedHTTPMetadataResolverTest.java
index 36f6c82f7..4e53be104 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/FileBackedHTTPMetadataResolverTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/FileBackedHTTPMetadataResolverTest.java
@@ -31,8 +31,8 @@ import javax.annotation.Nullable;
import org.opensaml.core.criterion.EntityIdCriterion;
import org.opensaml.core.testing.XMLObjectBaseTestCase;
import org.opensaml.core.xml.XMLObject;
+import org.opensaml.saml.metadata.resolver.filter.AbstractMetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
import org.opensaml.saml.metadata.resolver.filter.data.impl.MetadataSource;
import org.opensaml.saml.saml2.metadata.EntityDescriptor;
@@ -688,7 +688,7 @@ public class FileBackedHTTPMetadataResolverTest extends XMLObjectBaseTestCase {
// Test helpers
- public class MockContextTrackingFilter implements MetadataFilter {
+ public class MockContextTrackingFilter extends AbstractMetadataFilter {
public MetadataFilterContext lastFilterContext;
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/MockFailureFilter.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/MockFailureFilter.java
index 08e0e53b6..71b17f675 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/MockFailureFilter.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/MockFailureFilter.java
@@ -21,14 +21,14 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.opensaml.core.xml.XMLObject;
+import org.opensaml.saml.metadata.resolver.filter.AbstractMetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.FilterException;
-import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
/**
* Mock filter to test init failures.
*/
-public class MockFailureFilter implements MetadataFilter {
+public class MockFailureFilter extends AbstractMetadataFilter {
/** {@inheritDoc} */
@Nullable public XMLObject filter(@Nullable XMLObject metadata, @Nonnull final MetadataFilterContext context)
diff --git a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/PredicateRoleDescriptorResolverTest.java b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/PredicateRoleDescriptorResolverTest.java
index 65e17cb38..e26b7127d 100644
--- a/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/PredicateRoleDescriptorResolverTest.java
+++ b/opensaml-saml-impl/src/test/java/org/opensaml/saml/metadata/resolver/impl/PredicateRoleDescriptorResolverTest.java
@@ -421,6 +421,10 @@ public class PredicateRoleDescriptorResolverTest extends XMLObjectBaseTestCase {
}
public void setMetadataFilter(@Nullable final MetadataFilter newFilter) { }
+
+ @Nonnull public String getType() {
+ return "Static";
+ }
}
public static class BooleanPredicateCriterion implements EvaluableRoleDescriptorCriterion {
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list