[java-identity-provider] branch master updated: Add new metrics to gauge set from OSJ-200 and OSJ-202.

Brent Putman putmanb at georgetown.edu
Fri Jun 23 17:36:08 EDT 2017


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

putmanb pushed a commit to branch master
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=e3f062d93919175a44b63fcc5e6c7ff24b23f6bd

The following commit(s) were added to refs/heads/master by this push:
       new  e3f062d   Add new metrics to gauge set from OSJ-200 and OSJ-202.
e3f062d is described below

commit e3f062d93919175a44b63fcc5e6c7ff24b23f6bd
Author: Brent Putman <putmanb at georgetown.edu>
AuthorDate: Fri Jun 23 17:35:22 2017 -0400

    Add new metrics to gauge set from OSJ-200 and OSJ-202.
---
 .../impl/MetadataResolverServiceGaugeSet.java      | 71 +++++++++++++++++++---
 1 file changed, 61 insertions(+), 10 deletions(-)

diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java
index a206969..27ace76 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/metadata/impl/MetadataResolverServiceGaugeSet.java
@@ -16,6 +16,18 @@
  */
 package net.shibboleth.idp.saml.metadata.impl;
 
+import java.util.Collections;
+import java.util.Map;
+
+import javax.annotation.Nonnull;
+
+import org.joda.time.DateTime;
+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.impl.AbstractBatchMetadataResolver;
+import org.opensaml.saml.metadata.resolver.impl.AbstractReloadingMetadataResolver;
+
 import com.codahale.metrics.Gauge;
 import com.codahale.metrics.MetricFilter;
 import com.codahale.metrics.MetricRegistry;
@@ -31,16 +43,6 @@ import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
 import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
 import net.shibboleth.utilities.java.support.service.ServiceableComponent;
 
-import java.util.Collections;
-import java.util.Map;
-
-import javax.annotation.Nonnull;
-
-import org.joda.time.DateTime;
-import org.opensaml.saml.metadata.resolver.ChainingMetadataResolver;
-import org.opensaml.saml.metadata.resolver.MetadataResolver;
-import org.opensaml.saml.metadata.resolver.RefreshableMetadataResolver;
-
 /**
  * Additional gauges for metadata resolvers.
  */
@@ -51,6 +53,7 @@ public class MetadataResolverServiceGaugeSet extends ReloadableServiceGaugeSet i
      * 
      * @param metricName name to include in metric names produced by this set
      */
+    // Checkstyle: MethodLength OFF
     public MetadataResolverServiceGaugeSet(
             @Nonnull @NotEmpty @ParameterName(name="metricName") final String metricName) {
         super(metricName);
@@ -98,7 +101,55 @@ public class MetadataResolverServiceGaugeSet extends ReloadableServiceGaugeSet i
                         return mapBuilder.build();
                     }
                 });
+        
+        //TODO v4.0.0 - Switch to use RefreshableMetadataResolver when new methods promoted to interface
+        getMetricMap().put(
+                MetricRegistry.name(DEFAULT_METRIC_NAME, metricName, "successfulRefresh"),
+                new Gauge<Map<String,DateTime>>() {
+                    public Map<String,DateTime> getValue() {
+                        final Builder mapBuilder = ImmutableMap.<String,DateTime>builder();
+                        final ServiceableComponent<MetadataResolver> component = getService().getServiceableComponent();
+                        if (component != null) {
+                            try {                                
+                                for (final MetadataResolver resolver : getMetadataResolvers(component.getComponent())) {
+                                    if (resolver instanceof AbstractReloadingMetadataResolver) {
+                                        mapBuilder.put(resolver.getId(),
+                                                ((AbstractReloadingMetadataResolver) resolver)
+                                                    .getLastSuccessfulRefresh());
+                                    }
+                                }
+                            } finally {
+                                component.unpinComponent();
+                            }
+                        }
+                        return mapBuilder.build();
+                    }
+                });
+        
+        //TODO v4.0.0 - Switch to use BatchMetadataResolver when new methods promoted to interface
+        getMetricMap().put(
+                MetricRegistry.name(DEFAULT_METRIC_NAME, metricName, "rootValidUntil"),
+                new Gauge<Map<String,DateTime>>() {
+                    public Map<String,DateTime> getValue() {
+                        final Builder mapBuilder = ImmutableMap.<String,DateTime>builder();
+                        final ServiceableComponent<MetadataResolver> component = getService().getServiceableComponent();
+                        if (component != null) {
+                            try {                                
+                                for (final MetadataResolver resolver : getMetadataResolvers(component.getComponent())) {
+                                    if (resolver instanceof AbstractBatchMetadataResolver) {
+                                        mapBuilder.put(resolver.getId(),
+                                                ((AbstractBatchMetadataResolver) resolver).getRootValidUntil());
+                                    }
+                                }
+                            } finally {
+                                component.unpinComponent();
+                            }
+                        }
+                        return mapBuilder.build();
+                    }
+                });
     }
+    // Checkstyle: MethodLength ON
     
     /** {@inheritDoc} */
     @Override

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


More information about the commits mailing list