[java-shib-metadata] branch main updated: IDP-2116 - Add metrics for MetadataResolvers

Scott Cantor cantor.2 at osu.edu
Tue May 23 16:05:38 UTC 2023


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch main
in repository java-shib-metadata.

View the commit online:
http://git.shibboleth.net/view/?p=java-shib-metadata.git;a=commit;h=b7d3f2bbdb1c2146d3cbf5035d42fb0bc697fbb5

The following commit(s) were added to refs/heads/main by this push:
     new b7d3f2bb IDP-2116 - Add metrics for MetadataResolvers
b7d3f2bb is described below

commit b7d3f2bbdb1c2146d3cbf5035d42fb0bc697fbb5
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue May 23 12:05:35 2023 -0400

    IDP-2116 - Add metrics for MetadataResolvers
    
    https://shibboleth.atlassian.net/browse/IDP-2116
    
    Add abstract base for filter parsers.
    Wire in type field into metadata resolvers/filters.
---
 .../impl/ByReferenceMetadataFilterBridge.java      |  4 +-
 .../impl/MetadataResolverServiceGaugeSet.java      | 74 ++++++++++++++++++++--
 .../metadata/impl/ReloadableMetadataResolver.java  |  5 ++
 .../metadata/AbstractMetadataProviderParser.java   |  7 +-
 .../metadata/HTTPMetadataProviderParser.java       |  4 +-
 ...rser.java => AbstractMetadataFilterParser.java} | 37 ++++-------
 .../metadata/filter/AlgorithmFilterParser.java     |  5 +-
 .../spring/metadata/filter/ByReferenceParser.java  |  5 +-
 .../filter/EntityAttributesFilterParser.java       |  4 +-
 .../metadata/filter/EntityRoleFilterParser.java    |  4 +-
 .../metadata/filter/NameIDFormatFilterParser.java  |  8 +--
 .../metadata/filter/NodeProcessingParser.java      |  7 +-
 .../metadata/filter/PredicateFilterParser.java     |  4 +-
 .../metadata/filter/RequiredValidUntilParser.java  |  4 +-
 .../metadata/filter/SchemaValidationParser.java    |  5 +-
 .../metadata/filter/SignatureValidationParser.java |  5 +-
 16 files changed, 124 insertions(+), 58 deletions(-)

diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ByReferenceMetadataFilterBridge.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ByReferenceMetadataFilterBridge.java
index b6099229..bbecde9b 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ByReferenceMetadataFilterBridge.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ByReferenceMetadataFilterBridge.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.MetadataFilterChain;
 import org.opensaml.saml.metadata.resolver.filter.MetadataFilterContext;
 import org.opensaml.saml.metadata.resolver.filter.impl.ByReferenceMetadataFilter;
@@ -40,7 +40,7 @@ import net.shibboleth.shared.primitive.LoggerFactory;
  * This is a bridge filter that uses Spring to locate extant {@link ByReferenceMetadataFilter}
  * objects to run.
  */
-public class ByReferenceMetadataFilterBridge implements MetadataFilter {
+public class ByReferenceMetadataFilterBridge extends AbstractMetadataFilter {
 
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(ByReferenceMetadataFilterBridge.class);
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java
index 4a2c9911..3b97a6d1 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java
@@ -18,9 +18,11 @@ package net.shibboleth.idp.saml.metadata.impl;
 
 import java.time.Instant;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.function.BiConsumer;
+import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
 
@@ -28,12 +30,16 @@ import org.opensaml.saml.metadata.resolver.BatchMetadataResolver;
 import org.opensaml.saml.metadata.resolver.ChainingMetadataResolver;
 import org.opensaml.saml.metadata.resolver.MetadataResolver;
 import org.opensaml.saml.metadata.resolver.RefreshableMetadataResolver;
+import org.opensaml.saml.metadata.resolver.RemoteMetadataResolver;
+import org.opensaml.saml.metadata.resolver.filter.MetadataFilter;
+import org.opensaml.saml.metadata.resolver.filter.MetadataFilterChain;
 import org.slf4j.Logger;
 
 import com.codahale.metrics.Gauge;
 import com.codahale.metrics.MetricFilter;
 import com.codahale.metrics.MetricRegistry;
 import com.codahale.metrics.MetricSet;
+import com.google.common.base.Predicates;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMap.Builder;
 
@@ -58,7 +64,7 @@ public class MetadataResolverServiceGaugeSet extends ReloadableServiceGaugeSet<M
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(MetadataResolverServiceGaugeSet.class);
 
-// Checkstyle: MethodLength OFF
+// Checkstyle: MethodLength|AnonInnerLength OFF
     /**
      * Constructor.
      * 
@@ -155,8 +161,66 @@ public class MetadataResolverServiceGaugeSet extends ReloadableServiceGaugeSet<M
                         });
                     }
                 });
+
+        getMetricMap().put(
+                MetricRegistry.name(metricName, "type"),
+                new Gauge<Map<String,String>>() {
+                    public Map<String,String> getValue() {
+                        return valueGetter(new BiConsumer<Builder<String,String>, MetadataResolver>() {
+                            public void accept(final Builder<String,String> mapBuilder,
+                                    final MetadataResolver resolver) {
+                                if (resolver.getType() != null) {
+                                    mapBuilder.put(resolver.getId(), resolver.getType());
+                                }
+                            };
+                        });
+                    }
+                });
+
+        getMetricMap().put(
+                MetricRegistry.name(metricName, "uri"),
+                new Gauge<Map<String,String>>() {
+                    public Map<String,String> getValue() {
+                        return valueGetter(new BiConsumer<Builder<String,String>, MetadataResolver>() {
+                            public void accept(final Builder<String,String> mapBuilder,
+                                    final MetadataResolver resolver) {
+                                if (resolver instanceof RemoteMetadataResolver remote) {
+                                    final String uri = remote.getMetadataURI();
+                                    if (uri != null) {
+                                        mapBuilder.put(resolver.getId(), remote.getMetadataURI());
+                                    }
+                                }
+                            };
+                        });
+                    }
+                });
+
+        getMetricMap().put(
+                MetricRegistry.name(metricName, "filters"),
+                new Gauge<Map<String,Collection<String>>>() {
+                    public Map<String,Collection<String>> getValue() {
+                        return valueGetter(new BiConsumer<Builder<String,Collection<String>>, MetadataResolver>() {
+                            public void accept(final Builder<String,Collection<String>> mapBuilder,
+                                    final MetadataResolver resolver) {
+                                final MetadataFilter filter = resolver.getMetadataFilter();
+                                if (filter instanceof MetadataFilterChain chaining) {
+                                    mapBuilder.put(resolver.getId(),
+                                            chaining.getFilters().stream()
+                                                .map(MetadataFilter::getType)
+                                                .filter(Predicates.notNull())
+                                                .collect(Collectors.toUnmodifiableList()));
+                                } else if (filter != null) {
+                                    final String type = filter.getType();
+                                    if (type != null) {
+                                        mapBuilder.put(resolver.getId(), CollectionSupport.singletonList(type));
+                                    }
+                                }
+                            };
+                        });
+                    }
+                });
     }
-// Checkstyle: MethodLength ON
+// Checkstyle: MethodLength|AnonInnerLength ON
 
     /**
      * Extract the error message to report out.
@@ -246,9 +310,8 @@ public class MetadataResolverServiceGaugeSet extends ReloadableServiceGaugeSet<M
      */
     @Nonnull @Unmodifiable @NotLive private List<MetadataResolver> getAllChildren(
             @Nonnull final ChainingMetadataResolver parent) {
-        final ArrayList<MetadataResolver> result = new ArrayList<>(1+ parent.getResolvers().size());
-        // Add ourselves
-        result.add(parent);
+        final ArrayList<MetadataResolver> result = new ArrayList<>(parent.getResolvers().size());
+        
         for (final MetadataResolver child: parent.getResolvers()) {
             if (child instanceof ChainingMetadataResolver) {
                 result.addAll(getAllChildren((ChainingMetadataResolver) child));
@@ -256,6 +319,7 @@ public class MetadataResolverServiceGaugeSet extends ReloadableServiceGaugeSet<M
                 result.add(child);
             }
         }
+        
         return CollectionSupport.copyToList(result);
     }
 
diff --git a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ReloadableMetadataResolver.java b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ReloadableMetadataResolver.java
index cd5cd99d..58fb8379 100644
--- a/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ReloadableMetadataResolver.java
+++ b/shib-metadata-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/ReloadableMetadataResolver.java
@@ -121,5 +121,10 @@ public class ReloadableMetadataResolver extends AbstractIdentifiableInitializabl
     public void setMetadataFilter(@Nullable final MetadataFilter newFilter) {
         throw new UnsupportedOperationException("Cannot set Metadata filter");
     }
+
+    /** {@inheritDoc} */
+    @Nullable public String getType() {
+        return null;
+    }
     
 }
\ No newline at end of file
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/AbstractMetadataProviderParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/AbstractMetadataProviderParser.java
index a4d83e53..a9d8bbf7 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/AbstractMetadataProviderParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/AbstractMetadataProviderParser.java
@@ -180,6 +180,11 @@ public abstract class AbstractMetadataProviderParser extends AbstractCustomBeanD
         builder.setLazyInit(true);
 
         builder.addPropertyValue("id", StringSupport.trimOrNull(element.getAttributeNS(null, "id")));
+        
+        final QName resolverType = DOMTypeSupport.getXSIType(element);
+        if (resolverType != null) {
+            builder.addPropertyValue("type", resolverType.getLocalPart());
+        }
 
         if (isPresentNotChaining(element, "failFastInitialization")) {
             builder.addPropertyValue("failFastInitialization",
@@ -195,7 +200,7 @@ public abstract class AbstractMetadataProviderParser extends AbstractCustomBeanD
             builder.addPropertyReference("activationCondition",
                     AttributeSupport.ensureAttributeValue(element, null, "activationConditionRef"));
         }
-
+        
         processPredicateOptions(element, parserContext, builder);
 
         final List<Element> filters =
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProviderParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProviderParser.java
index 96414875..7960e0f7 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProviderParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/HTTPMetadataProviderParser.java
@@ -38,7 +38,7 @@ import net.shibboleth.spring.http.HttpClientFactoryBean;
 public abstract class HTTPMetadataProviderParser extends AbstractReloadingMetadataProviderParser {
 
     /** Default caching type. */
-    @Nonnull private static final Class<?> DEFAULT_CACHING_CLASS = HttpClientFactoryBean.class;
+    @Nonnull private static final Class<?> DEFAULT_CLIENT_CLASS = HttpClientFactoryBean.class;
 
     /** Logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(HTTPMetadataProviderParser.class);
@@ -105,7 +105,7 @@ public abstract class HTTPMetadataProviderParser extends AbstractReloadingMetada
             @Nullable final BeanDefinition httpClientSecurityParameters) {
 
         return HTTPMetadataProvidersParserSupport.buildCommonClientBuilder(element, parserContext,
-                HTTPMetadataProviderParser.DEFAULT_CACHING_CLASS, httpClientSecurityParametersRef,
+                HTTPMetadataProviderParser.DEFAULT_CLIENT_CLASS, httpClientSecurityParametersRef,
                 httpClientSecurityParameters).getBeanDefinition();
     }
     
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/RequiredValidUntilParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/AbstractMetadataFilterParser.java
similarity index 58%
copy from shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/RequiredValidUntilParser.java
copy to shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/AbstractMetadataFilterParser.java
index 2b9c6d9f..aa772d6f 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/RequiredValidUntilParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/AbstractMetadataFilterParser.java
@@ -17,45 +17,36 @@
 
 package net.shibboleth.spring.metadata.filter;
 
+
 import javax.annotation.Nonnull;
 import javax.xml.namespace.QName;
 
-import org.opensaml.saml.metadata.resolver.filter.impl.RequiredValidUntilFilter;
 import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 import net.shibboleth.shared.spring.custom.AbstractCustomBeanDefinitionParser;
-import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
+import net.shibboleth.shared.xml.DOMTypeSupport;
 
-/**
- * Parser for a <RequiredValidUntil> filter.
+/** 
+ * Abstract base class for filter parsers.
+ * 
+ * @since 5.0.0
  */
-public class RequiredValidUntilParser extends AbstractCustomBeanDefinitionParser {
-
-    /** Element name. */
-    @Nonnull public static final QName TYPE_NAME =
-            new QName(AbstractMetadataProviderParser.METADATA_NAMESPACE, "RequiredValidUntil");
-
-    /** {@inheritDoc} */
-    @Override
-    @Nonnull protected Class<?> getBeanClass(@Nonnull final Element element) {
-        // IDP-693 maxValidityInterval is a duration or a value in seconds - so we need a factory
-        return RequiredValidUntilFilter.class;
-    }
+public abstract class AbstractMetadataFilterParser extends AbstractCustomBeanDefinitionParser {
 
     /** {@inheritDoc} */
     @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
 
-        if (element.hasAttributeNS(null, "maxValidityInterval")) {
-            builder.addPropertyValue("maxValidityInterval", element.getAttributeNS(null, "maxValidityInterval"));
+        builder.setInitMethodName("initialize");
+        builder.setDestroyMethodName("destroy");
+
+        final QName filterType = DOMTypeSupport.getXSIType(element);
+        if (filterType != null) {
+            builder.addPropertyValue("type", filterType.getLocalPart());
         }
+        
     }
 
-    /** {@inheritDoc} */
-    @Override protected boolean shouldGenerateId() {
-        return true;
-    }
-    
 }
\ No newline at end of file
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/AlgorithmFilterParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/AlgorithmFilterParser.java
index 80e0f62b..a022fd28 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/AlgorithmFilterParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/AlgorithmFilterParser.java
@@ -44,7 +44,6 @@ import org.w3c.dom.Element;
 
 import net.shibboleth.shared.logic.ScriptedPredicate;
 import net.shibboleth.shared.primitive.LoggerFactory;
-import net.shibboleth.shared.spring.custom.AbstractCustomBeanDefinitionParser;
 import net.shibboleth.shared.xml.ElementSupport;
 import net.shibboleth.spring.ScriptTypeBeanParser;
 import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
@@ -54,7 +53,7 @@ import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
  * 
  * @since 4.0.0
  */
-public class AlgorithmFilterParser extends AbstractCustomBeanDefinitionParser {
+public class AlgorithmFilterParser extends AbstractMetadataFilterParser {
 
     /** Element name. */
     @Nonnull public static final QName TYPE_NAME = new QName(AbstractMetadataProviderParser.METADATA_NAMESPACE,
@@ -74,6 +73,8 @@ public class AlgorithmFilterParser extends AbstractCustomBeanDefinitionParser {
     @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
 
+        super.doParse(element, parserContext, builder);
+        
         final Unmarshaller digestUnmarshaller = XMLObjectSupport.getUnmarshaller(DigestMethod.DEFAULT_ELEMENT_NAME);
         final Unmarshaller signingUnmarshaller =XMLObjectSupport.getUnmarshaller(SigningMethod.DEFAULT_ELEMENT_NAME);
         final Unmarshaller encryptionUnmarshaller =
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/ByReferenceParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/ByReferenceParser.java
index e6ab9564..d7b799ee 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/ByReferenceParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/ByReferenceParser.java
@@ -32,7 +32,6 @@ import org.springframework.beans.factory.support.ManagedMap;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
-import net.shibboleth.shared.spring.custom.AbstractCustomBeanDefinitionParser;
 import net.shibboleth.shared.spring.util.SpringSupport;
 import net.shibboleth.shared.xml.ElementSupport;
 import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
@@ -40,7 +39,7 @@ import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
 /**
  * Parser for a <ByReference> filter.
  */
-public class ByReferenceParser extends AbstractCustomBeanDefinitionParser {
+public class ByReferenceParser extends AbstractMetadataFilterParser {
 
     /** Element name. */
     @Nonnull public static final QName TYPE_NAME =
@@ -55,6 +54,8 @@ public class ByReferenceParser extends AbstractCustomBeanDefinitionParser {
     /** {@inheritDoc} */
     @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
+        super.doParse(element, parserContext, builder);
+        
         builder.setLazyInit(false);
 
         final List<Element> children = ElementSupport.getChildElements(element,
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/EntityAttributesFilterParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/EntityAttributesFilterParser.java
index 2b3dfd7b..21b93d65 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/EntityAttributesFilterParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/EntityAttributesFilterParser.java
@@ -42,13 +42,12 @@ import org.w3c.dom.Element;
 
 import net.shibboleth.shared.logic.ScriptedPredicate;
 import net.shibboleth.shared.primitive.LoggerFactory;
-import net.shibboleth.shared.spring.custom.AbstractCustomBeanDefinitionParser;
 import net.shibboleth.shared.xml.ElementSupport;
 import net.shibboleth.spring.ScriptTypeBeanParser;
 import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
 
 /** Parser for a <EntityAttributes> filter. */
-public class EntityAttributesFilterParser extends AbstractCustomBeanDefinitionParser {
+public class EntityAttributesFilterParser extends AbstractMetadataFilterParser {
 
     /** Element name. */
     @Nonnull public static final QName TYPE_NAME = new QName(AbstractMetadataProviderParser.METADATA_NAMESPACE,
@@ -67,6 +66,7 @@ public class EntityAttributesFilterParser extends AbstractCustomBeanDefinitionPa
     /** {@inheritDoc} */
     @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
+        super.doParse(element, parserContext, builder);
 
         final Unmarshaller unmarshaller = XMLObjectSupport.getUnmarshaller(Attribute.DEFAULT_ELEMENT_NAME);
         if (unmarshaller == null) {
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/EntityRoleFilterParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/EntityRoleFilterParser.java
index 370f4c78..749b201d 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/EntityRoleFilterParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/EntityRoleFilterParser.java
@@ -28,7 +28,6 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
-import net.shibboleth.shared.spring.custom.AbstractCustomBeanDefinitionParser;
 import net.shibboleth.shared.spring.util.SpringSupport;
 import net.shibboleth.shared.xml.ElementSupport;
 import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
@@ -36,7 +35,7 @@ import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
 /**
  * Parser for a <EntityRolet> filter.
  */
-public class EntityRoleFilterParser extends AbstractCustomBeanDefinitionParser {
+public class EntityRoleFilterParser extends AbstractMetadataFilterParser {
 
     /** Element name. */
     @Nonnull public static final QName TYPE_NAME = new QName(AbstractMetadataProviderParser.METADATA_NAMESPACE,
@@ -51,6 +50,7 @@ public class EntityRoleFilterParser extends AbstractCustomBeanDefinitionParser {
     /** {@inheritDoc} */
     @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
+        super.doParse(element, parserContext, builder);
         
         final List<QName> retainedRoles = new ArrayList<>();
         final List<Element> retainedRoleElems =
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/NameIDFormatFilterParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/NameIDFormatFilterParser.java
index 021891a8..a733380b 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/NameIDFormatFilterParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/NameIDFormatFilterParser.java
@@ -34,14 +34,13 @@ import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
 import net.shibboleth.shared.logic.ScriptedPredicate;
-import net.shibboleth.shared.spring.custom.AbstractCustomBeanDefinitionParser;
 import net.shibboleth.shared.spring.util.SpringSupport;
 import net.shibboleth.shared.xml.ElementSupport;
 import net.shibboleth.spring.ScriptTypeBeanParser;
 import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
 
 /** Parser for a <NameIDFormat> filter. */
-public class NameIDFormatFilterParser extends AbstractCustomBeanDefinitionParser {
+public class NameIDFormatFilterParser extends AbstractMetadataFilterParser {
 
     /** Element name. */
     @Nonnull public static final QName TYPE_NAME = new QName(AbstractMetadataProviderParser.METADATA_NAMESPACE,
@@ -57,9 +56,8 @@ public class NameIDFormatFilterParser extends AbstractCustomBeanDefinitionParser
     /** {@inheritDoc} */
     @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
-
-        builder.setInitMethodName("initialize");
-        builder.setDestroyMethodName("destroy");
+        super.doParse(element, parserContext, builder);
+        
         builder.setLazyInit(true);
 
         if (element.hasAttributeNS(null, "removeExistingFormats")) {
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/NodeProcessingParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/NodeProcessingParser.java
index 84fdbde0..e0206a5a 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/NodeProcessingParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/NodeProcessingParser.java
@@ -27,7 +27,6 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
-import net.shibboleth.shared.spring.custom.AbstractCustomBeanDefinitionParser;
 import net.shibboleth.shared.spring.util.SpringSupport;
 import net.shibboleth.shared.xml.ElementSupport;
 import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
@@ -36,7 +35,7 @@ import net.shibboleth.spring.metadata.MetadataNamespaceHandler;
 /**
  * Parser for a <NodeProcessing> filter.
  */
-public class NodeProcessingParser extends AbstractCustomBeanDefinitionParser {
+public class NodeProcessingParser extends AbstractMetadataFilterParser {
 
     /** Element name. */
     @Nonnull public static final QName TYPE_NAME =
@@ -51,8 +50,8 @@ public class NodeProcessingParser extends AbstractCustomBeanDefinitionParser {
     /** {@inheritDoc} */
     @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
-        builder.setInitMethodName("initialize");
-        builder.setDestroyMethodName("destroy");
+        super.doParse(element, parserContext, builder);
+        
         builder.setLazyInit(true);
 
         final List<Element> children =
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/PredicateFilterParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/PredicateFilterParser.java
index 8e88289f..3cb096b2 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/PredicateFilterParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/PredicateFilterParser.java
@@ -42,7 +42,6 @@ import net.shibboleth.shared.logic.PredicateSupport;
 import net.shibboleth.shared.logic.ScriptedPredicate;
 import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.primitive.StringSupport;
-import net.shibboleth.shared.spring.custom.AbstractCustomBeanDefinitionParser;
 import net.shibboleth.shared.spring.util.SpringSupport;
 import net.shibboleth.shared.xml.AttributeSupport;
 import net.shibboleth.shared.xml.ElementSupport;
@@ -52,7 +51,7 @@ import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
 /**
  * Parser for a <Predicate> filter.
  */
-public class PredicateFilterParser extends AbstractCustomBeanDefinitionParser {
+public class PredicateFilterParser extends AbstractMetadataFilterParser {
 
     /** Element name. */
     @Nonnull public static final QName TYPE_NAME =
@@ -87,6 +86,7 @@ public class PredicateFilterParser extends AbstractCustomBeanDefinitionParser {
     /** {@inheritDoc} */
     @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
+        super.doParse(element, parserContext, builder);
 
         if (element.hasAttributeNS(null, "removeEmptyEntitiesDescriptors")) {
             builder.addPropertyValue("removeEmptyEntitiesDescriptors", SpringSupport.getStringValueAsBoolean(
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/RequiredValidUntilParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/RequiredValidUntilParser.java
index 2b9c6d9f..9f6ea983 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/RequiredValidUntilParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/RequiredValidUntilParser.java
@@ -25,13 +25,12 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
-import net.shibboleth.shared.spring.custom.AbstractCustomBeanDefinitionParser;
 import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
 
 /**
  * Parser for a <RequiredValidUntil> filter.
  */
-public class RequiredValidUntilParser extends AbstractCustomBeanDefinitionParser {
+public class RequiredValidUntilParser extends AbstractMetadataFilterParser {
 
     /** Element name. */
     @Nonnull public static final QName TYPE_NAME =
@@ -47,6 +46,7 @@ public class RequiredValidUntilParser extends AbstractCustomBeanDefinitionParser
     /** {@inheritDoc} */
     @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
+        super.doParse(element, parserContext, builder);
 
         if (element.hasAttributeNS(null, "maxValidityInterval")) {
             builder.addPropertyValue("maxValidityInterval", element.getAttributeNS(null, "maxValidityInterval"));
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/SchemaValidationParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/SchemaValidationParser.java
index f817c505..314f62bf 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/SchemaValidationParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/SchemaValidationParser.java
@@ -25,14 +25,13 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
-import net.shibboleth.shared.spring.custom.AbstractCustomBeanDefinitionParser;
 import net.shibboleth.shared.xml.AttributeSupport;
 import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
 
 /**
  * Parser for a <SchemaValidation> filter.
  */
-public class SchemaValidationParser extends AbstractCustomBeanDefinitionParser {
+public class SchemaValidationParser extends AbstractMetadataFilterParser {
 
     /** Element name. */
     @Nonnull public static final QName TYPE_NAME =
@@ -47,6 +46,8 @@ public class SchemaValidationParser extends AbstractCustomBeanDefinitionParser {
     /** {@inheritDoc} */
     @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
+        super.doParse(element, parserContext, builder);
+        
         if (element.hasAttributeNS(null, "schemaBuilderRef")) {
             builder.addConstructorArgReference(
                     AttributeSupport.ensureAttributeValue(element, null, "schemaBuilderRef"));
diff --git a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/SignatureValidationParser.java b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/SignatureValidationParser.java
index 0f9ec8bb..af8a977b 100644
--- a/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/SignatureValidationParser.java
+++ b/shib-metadata-spring/src/main/java/net/shibboleth/spring/metadata/filter/SignatureValidationParser.java
@@ -46,7 +46,6 @@ import org.w3c.dom.Element;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.primitive.StringSupport;
-import net.shibboleth.shared.spring.custom.AbstractCustomBeanDefinitionParser;
 import net.shibboleth.shared.spring.util.SpringSupport;
 import net.shibboleth.shared.xml.AttributeSupport;
 import net.shibboleth.shared.xml.ElementSupport;
@@ -55,7 +54,7 @@ import net.shibboleth.spring.metadata.AbstractMetadataProviderParser;
 /**
  * Parser for xsi:type="SignatureValidation".
  */
-public class SignatureValidationParser extends AbstractCustomBeanDefinitionParser {
+public class SignatureValidationParser extends AbstractMetadataFilterParser {
 
     /** Schema type name. */
     @Nonnull public static final QName TYPE_NAME =
@@ -78,6 +77,8 @@ public class SignatureValidationParser extends AbstractCustomBeanDefinitionParse
     /** {@inheritDoc} */
     @Override protected void doParse(@Nonnull final Element element, @Nonnull final ParserContext parserContext, 
             @Nonnull final BeanDefinitionBuilder builder) {
+        super.doParse(element, parserContext, builder);
+        
         final boolean hasEngineRef = element.hasAttributeNS(null, "trustEngineRef");
         final boolean hasCertFile = element.hasAttributeNS(null, "certificateFile");
         final List<Element> publicKeys = ElementSupport.getChildElements(element, PUBLIC_KEY);

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list