[java-plugin-shibd] branch main updated: Pass agent into application for metrics.

Scott Cantor cantor.2 at osu.edu
Fri Aug 15 13:44:15 UTC 2025


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

scantor pushed a commit to branch main
in repository java-plugin-shibd.

View the commit online:
http://git.shibboleth.net/view/?p=java-plugin-shibd.git;a=commit;h=f7722241a5b822385a1c84572a642454e8df2f34

The following commit(s) were added to refs/heads/main by this push:
     new f772224  Pass agent into application for metrics.
f772224 is described below

commit f7722241a5b822385a1c84572a642454e8df2f34
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Fri Aug 15 09:44:09 2025 -0400

    Pass agent into application for metrics.
---
 .../java/net/shibboleth/sp/impl/BasicAgent.java    | 19 ++++++
 .../net/shibboleth/sp/impl/BasicApplication.java   | 79 +++++++++++++++-------
 2 files changed, 73 insertions(+), 25 deletions(-)

diff --git a/sp-server-impl/src/main/java/net/shibboleth/sp/impl/BasicAgent.java b/sp-server-impl/src/main/java/net/shibboleth/sp/impl/BasicAgent.java
index 527ba83..f7a23c2 100644
--- a/sp-server-impl/src/main/java/net/shibboleth/sp/impl/BasicAgent.java
+++ b/sp-server-impl/src/main/java/net/shibboleth/sp/impl/BasicAgent.java
@@ -31,6 +31,7 @@ import com.google.common.base.MoreObjects;
 
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.collection.CollectionSupport;
+import net.shibboleth.shared.component.ComponentInitializationException;
 import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.net.IPRange;
 import net.shibboleth.shared.primitive.StringSupport;
@@ -190,6 +191,24 @@ public class BasicAgent extends BasicApplication implements Agent {
         
         return CollectionSupport.copyToList(apps);
     }
+    
+    
+
+    /** {@inheritDoc} */
+    @Override
+    protected void doInitialize() throws ComponentInitializationException {
+        super.doInitialize();
+        
+        // Handle ourselves.
+        setAgent(this);
+
+        // Install us into each child Application.
+        for (final Application a : applicationMap.values()) {
+            if (a instanceof BasicApplication app) {
+                app.setAgent(this);
+            }
+        }
+    }
 
     /** {@inheritDoc} */
     @Override
diff --git a/sp-server-impl/src/main/java/net/shibboleth/sp/impl/BasicApplication.java b/sp-server-impl/src/main/java/net/shibboleth/sp/impl/BasicApplication.java
index e9e4cb4..846bb54 100644
--- a/sp-server-impl/src/main/java/net/shibboleth/sp/impl/BasicApplication.java
+++ b/sp-server-impl/src/main/java/net/shibboleth/sp/impl/BasicApplication.java
@@ -46,6 +46,7 @@ import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.logic.FunctionSupport;
 import net.shibboleth.shared.primitive.StringSupport;
 import net.shibboleth.shared.service.ReloadableService;
+import net.shibboleth.sp.Agent;
 import net.shibboleth.sp.Application;
 import net.shibboleth.sp.profile.StateTokenManager;
 
@@ -54,6 +55,7 @@ import net.shibboleth.sp.profile.StateTokenManager;
  */
 public class BasicApplication extends DefaultRelyingPartyConfigurationResolver implements Application {
 
+    /** Our self-managed "defaults". */
     @Nonnull private BasicRelyingPartyConfiguration defaultRelyingPartyConfiguration;
     
     /** Lookup strategy for authenticating authority. */
@@ -65,6 +67,9 @@ public class BasicApplication extends DefaultRelyingPartyConfigurationResolver i
     /** Token consumer list lookup strategy. */
     @Nonnull private Function<ProfileRequestContext,List<String>> tokenConsumerLookupStrategy;
 
+    /** Link to parent {@link Agent}. */
+    @Nullable private Agent agent;
+        
     /** State token management. */
     @NonnullAfterInit private StateTokenManager stateTokenManager;
     
@@ -88,30 +93,7 @@ public class BasicApplication extends DefaultRelyingPartyConfigurationResolver i
         sessionInitiatorLookupStrategy = FunctionSupport.constant(CollectionSupport.emptyList());
         tokenConsumerLookupStrategy = FunctionSupport.constant(CollectionSupport.emptyList());
     }
-    
-    /** {@inheritDoc} */
-    @Override
-    protected void doInitialize() throws ComponentInitializationException {
-        // Init our default config and inject into parent class.
-        defaultRelyingPartyConfiguration.setId(getId());
-        defaultRelyingPartyConfiguration.initialize();
-        setDefaultConfiguration(defaultRelyingPartyConfiguration);
         
-        super.doInitialize();
-        
-        if (stateTokenManager == null) {
-            throw new ComponentInitializationException("StateTokenManager cannot be null");
-        } else if (metadataResolver == null) {
-            throw new ComponentInitializationException("MetadataResolver cannot be null");
-        } else if (transcodingRegistry == null) {
-            throw new ComponentInitializationException("AttributeTranscoderRegistry cannot be null");
-        } else if (attributeResolver == null) {
-            throw new ComponentInitializationException("AttributeResolver cannot be null");
-        } else if (attributeFilter == null) {
-            throw new ComponentInitializationException("AttributeFilter cannot be null");
-        }
-    }
-    
     /** {@inheritDoc} */
     @SuppressWarnings("null")
     @Override
@@ -126,13 +108,37 @@ public class BasicApplication extends DefaultRelyingPartyConfigurationResolver i
         
         final String base = super.getMetricName();
         if (base != null) {
-            // TODO: get access to agent ID for metrics
-            return MetricRegistry.name(base, getId());
+            if (agent != null) {
+                return MetricRegistry.name(base, agent.getId(), getApplicationId());
+            } else {
+                // Just in case, but should not happen in practice.
+                return MetricRegistry.name(base, getApplicationId());
+            }
         }
         
         return null;
     }
     
+    /**
+     * Gets the parent {@link Agent}.
+     * 
+     * @return app parent {@link Agent} or null
+     */
+    @Nullable public Agent getAgent() {
+        return agent;
+    }
+    
+    /**
+     * Sets the parent {@link Agent}.
+     * 
+     * @param theAgent parent {@link Agent} or null
+     */
+    public void setAgent(@Nullable final Agent theAgent) {
+        checkSetterPreconditions();
+        
+        agent = theAgent;
+    }
+    
     /**
      * Set default issuer value to use for this application.
      * 
@@ -426,6 +432,29 @@ public class BasicApplication extends DefaultRelyingPartyConfigurationResolver i
         attributeFilter = Constraint.isNotNull(service, "AttributeFilter service cannot be null");
     }
 
+    /** {@inheritDoc} */
+    @Override
+    protected void doInitialize() throws ComponentInitializationException {
+        // Init our default config and inject into parent class.
+        defaultRelyingPartyConfiguration.setId(getApplicationId());
+        defaultRelyingPartyConfiguration.initialize();
+        setDefaultConfiguration(defaultRelyingPartyConfiguration);
+        
+        super.doInitialize();
+        
+        if (stateTokenManager == null) {
+            throw new ComponentInitializationException("StateTokenManager cannot be null");
+        } else if (metadataResolver == null) {
+            throw new ComponentInitializationException("MetadataResolver cannot be null");
+        } else if (transcodingRegistry == null) {
+            throw new ComponentInitializationException("AttributeTranscoderRegistry cannot be null");
+        } else if (attributeResolver == null) {
+            throw new ComponentInitializationException("AttributeResolver cannot be null");
+        } else if (attributeFilter == null) {
+            throw new ComponentInitializationException("AttributeFilter cannot be null");
+        }
+    }
+    
     /** {@inheritDoc} */
     @Override
     public int hashCode() {

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


More information about the commits mailing list