[java-identity-provider] 02/02: IDP-1857 Log the plugins at IdP startup

Rod Widdowson rdw at steadingsoftware.com
Wed Sep 29 19:23:29 UTC 2021


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

rdw pushed a commit to branch main
in repository java-identity-provider.

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

commit 7cefc69228bfa3428dbcee26cef30ae8758f3569
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Wed Sep 29 20:20:59 2021 +0100

    IDP-1857 Log the plugins at IdP startup
    
    https://shibboleth.atlassian.net/browse/IDP-1857
    
    Stage 2 : report on Plugins and enabled Modules
---
 .../shibboleth/idp/log/LogbackLoggingService.java  | 66 +++++++++++++++++-----
 1 file changed, 51 insertions(+), 15 deletions(-)

diff --git a/idp-admin-api/src/main/java/net/shibboleth/idp/log/LogbackLoggingService.java b/idp-admin-api/src/main/java/net/shibboleth/idp/log/LogbackLoggingService.java
index 4605b64cc..ee75ab7de 100644
--- a/idp-admin-api/src/main/java/net/shibboleth/idp/log/LogbackLoggingService.java
+++ b/idp-admin-api/src/main/java/net/shibboleth/idp/log/LogbackLoggingService.java
@@ -20,20 +20,13 @@ package net.shibboleth.idp.log;
 import java.io.IOException;
 import java.io.InputStream;
 import java.time.Instant;
+import java.util.List;
+import java.util.ServiceLoader;
+import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
-import net.shibboleth.idp.Version;
-import net.shibboleth.idp.spring.IdPPropertiesApplicationContextInitializer;
-import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
-import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
-import net.shibboleth.utilities.java.support.component.ComponentSupport;
-import net.shibboleth.utilities.java.support.logic.Constraint;
-import net.shibboleth.utilities.java.support.service.AbstractReloadableService;
-import net.shibboleth.utilities.java.support.service.ServiceException;
-import net.shibboleth.utilities.java.support.service.ServiceableComponent;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.ApplicationContext;
@@ -41,15 +34,27 @@ import org.springframework.context.ApplicationContextAware;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
 
+import com.google.common.base.StandardSystemProperty;
+import com.google.common.io.Closeables;
+
 import ch.qos.logback.classic.LoggerContext;
 import ch.qos.logback.classic.joran.JoranConfigurator;
 import ch.qos.logback.core.joran.spi.JoranException;
 import ch.qos.logback.core.status.ErrorStatus;
 import ch.qos.logback.core.status.InfoStatus;
 import ch.qos.logback.core.status.StatusManager;
-
-import com.google.common.base.StandardSystemProperty;
-import com.google.common.io.Closeables;
+import net.shibboleth.idp.Version;
+import net.shibboleth.idp.module.IdPModule;
+import net.shibboleth.idp.module.ModuleContext;
+import net.shibboleth.idp.plugin.IdPPlugin;
+import net.shibboleth.idp.spring.IdPPropertiesApplicationContextInitializer;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
+import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
+import net.shibboleth.utilities.java.support.component.ComponentSupport;
+import net.shibboleth.utilities.java.support.logic.Constraint;
+import net.shibboleth.utilities.java.support.service.AbstractReloadableService;
+import net.shibboleth.utilities.java.support.service.ServiceException;
+import net.shibboleth.utilities.java.support.service.ServiceableComponent;
 
 /**
  * Simple {@link LoggingService} that watches for logback configuration file changes
@@ -245,6 +250,37 @@ public class LogbackLoggingService extends AbstractReloadableService<Object>
                 logger.debug("{}", standardSystemProperty);
             }
         }
+        final List<IdPPlugin> plugins = ServiceLoader.
+                load(IdPPlugin.class).
+                stream().
+                map(e->e.get()).
+                collect(Collectors.toList());
+        if (plugins.isEmpty()) {
+            logger.info("No Plugins Loaded");
+        } else {
+            logger.info("Plugins:");
+            for (final IdPPlugin idpPlugin : plugins) {
+                logger.info("\t\t{} : v{}.{}.{}",  idpPlugin.getPluginId(), idpPlugin.getMajorVersion(),
+                        idpPlugin.getMajorVersion(), idpPlugin.getPatchVersion());
+            }
+        }
+        final String idpHome = loggerContext.getProperty(IdPPropertiesApplicationContextInitializer.IDP_HOME_PROPERTY);
+        if (idpHome != null) {
+            final ModuleContext context = new ModuleContext(idpHome);
+            final List<IdPModule> modules = ServiceLoader.
+                    load(IdPModule.class).
+                    stream().
+                    map(e->e.get()).
+                    filter(f->f.isEnabled(context)).
+                    collect(Collectors.toList());
+            if (modules.isEmpty()) {
+                logger.info("No Modules Enabled");
+            } else {
+                logger.info("Enabled Modules:");
+                for (final IdPModule module : modules) {
+                    logger.info("\t\t{}",  module.getName(context));
+                }
+            }
+        }
     }
-
-}
\ No newline at end of file
+}

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


More information about the commits mailing list