[java-identity-provider] 17/51: Revamp logging bean, add warning if property auto-search is off.

Rod Widdowson rdw at steadingsoftware.com
Sat Mar 16 14:28:49 UTC 2024


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

rdw pushed a commit to branch dev/IDP-2147
in repository java-identity-provider.

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

commit ce28ac97b93311077b3478b842724b990414a42e
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Fri Feb 16 13:20:25 2024 -0500

    Revamp logging bean, add warning if property auto-search is off.
---
 .../idp/admin/impl/LogImplementationDetails.java   | 51 +++++++++++++---------
 .../net/shibboleth/idp/conf/global-system.xml      |  4 +-
 2 files changed, 32 insertions(+), 23 deletions(-)

diff --git a/idp-admin-impl/src/main/java/net/shibboleth/idp/admin/impl/LogImplementationDetails.java b/idp-admin-impl/src/main/java/net/shibboleth/idp/admin/impl/LogImplementationDetails.java
index 866c44e6e..4c47d7170 100644
--- a/idp-admin-impl/src/main/java/net/shibboleth/idp/admin/impl/LogImplementationDetails.java
+++ b/idp-admin-impl/src/main/java/net/shibboleth/idp/admin/impl/LogImplementationDetails.java
@@ -19,42 +19,41 @@ import java.util.ServiceLoader;
 import java.util.stream.Collectors;
 
 import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 
 import org.slf4j.Logger;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ApplicationObjectSupport;
 
 import com.google.common.base.StandardSystemProperty;
 
 import net.shibboleth.idp.Version;
 import net.shibboleth.idp.module.IdPModule;
 import net.shibboleth.idp.plugin.IdPPlugin;
+import net.shibboleth.idp.spring.IdPPropertiesApplicationContextInitializer;
 import net.shibboleth.profile.module.ModuleContext;
-import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.primitive.LoggerFactory;
 
 /**
- * A bean that logs IdP internals when instantiated.
+ * A bean that logs IdP internals when instantiated, and outputs a number of warning conditions.
  * 
  * @since 4.3.0
  */
-public final class LogImplementationDetails {
+public final class LogImplementationDetails extends ApplicationObjectSupport {
 
     /** Class logger. */
     @Nonnull private final Logger log = LoggerFactory.getLogger(LogImplementationDetails.class);
 
-    /**
-     * <p>Log the IdP version and Java version and vendor at INFO level.</p>
-     * 
-     * <p>Log system properties defined by {@link StandardSystemProperty} at DEBUG level.</p>
-     * 
-     * <p>Log duplicate properties if found at WARN level.</p>
-     * 
-     * @param idpHomeLocation idp.home property
-     * @param duplicateProperties tracking of duplicated properties
-     */
-    public LogImplementationDetails(@Nullable @NotEmpty final String idpHomeLocation,
-            @Nullable @NotEmpty final String duplicateProperties) {
-        
+    /** {@inheritDoc} */
+    @Override
+    protected boolean isContextRequired() {
+        return true;
+    }
+
+// Checkstyle: CyclomaticComplexity OFF
+    /** {@inheritDoc} */
+    @Override
+    protected void initApplicationContext(@Nonnull final ApplicationContext context) throws BeansException {
         log.info("Shibboleth IdP Version {}", Version.getVersion());
         log.info("Java version='{}' vendor='{}'", StandardSystemProperty.JAVA_VERSION.value(),
                 StandardSystemProperty.JAVA_VENDOR.value());
@@ -78,30 +77,42 @@ public final class LogImplementationDetails {
             }
         }
         
+        final String idpHomeLocation =
+                context.getEnvironment().getProperty(IdPPropertiesApplicationContextInitializer.IDP_HOME_PROPERTY);
         if (idpHomeLocation != null) {
-            final ModuleContext context = new ModuleContext(idpHomeLocation);
+            final ModuleContext moduleContext = new ModuleContext(idpHomeLocation);
             final List<IdPModule> modules = ServiceLoader.
                     load(IdPModule.class).
                     stream().
                     map(e->e.get()).
-                    filter(f->f.isEnabled(context)).
+                    filter(f->f.isEnabled(moduleContext)).
                     collect(Collectors.toList());
             if (modules.isEmpty()) {
                 log.info("No Modules Enabled");
             } else {
                 log.info("Enabled Modules:");
                 for (final IdPModule module : modules) {
-                    log.info("\t\t{}",  module.getName(context));
+                    log.info("\t\t{}",  module.getName(moduleContext));
                 }
             }
         } else {
             log.warn("Could not enumerate Modules");
         }
         
+        final String duplicateProperties =
+                context.getEnvironment().getProperty(IdPPropertiesApplicationContextInitializer.IDP_DUPLICATE_PROPERTY);
         if (duplicateProperties != null && !duplicateProperties.isBlank()) {
             log.warn("Duplicate properties were detected: {}", duplicateProperties);
         }
         
+        final String autoSearch =
+                context.getEnvironment().getProperty(
+                        IdPPropertiesApplicationContextInitializer.IDP_AUTOSEARCH_PROPERTY);
+        if (!Boolean.valueOf(autoSearch)) {
+            log.warn("{} is false or unset, plugin use may require additional changes to add new property sources",
+                    IdPPropertiesApplicationContextInitializer.IDP_AUTOSEARCH_PROPERTY);
+        }
     }
+// Checkstyle: CyclomaticComplexity ON
     
 }
\ No newline at end of file
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/global-system.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/global-system.xml
index fa3b71148..90dc1c19b 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/global-system.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/global-system.xml
@@ -193,9 +193,7 @@
         p:metricRegistry-ref="shibboleth.metrics.MetricRegistry"
         p:contextLookAsideMap-ref="shibboleth.ContextLookAsideMap" />
 
-    <bean class="net.shibboleth.idp.admin.impl.LogImplementationDetails"
-        c:_0="%{idp.home}"
-        c:_1="%{idp.duplicateProperties:}"/>
+    <bean class="net.shibboleth.idp.admin.impl.LogImplementationDetails" />
 
     <bean class="net.shibboleth.idp.spring.DeprecatedPropertyBean">
         <property name="deprecatedProperties">

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


More information about the commits mailing list