[java-identity-provider] branch main updated: IDP-2069 Null handling

Rod Widdowson rdw at steadingsoftware.com
Thu Mar 2 20:14:23 UTC 2023


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=af316513ebffe999f6ef49a576724262bf195c5f

The following commit(s) were added to refs/heads/main by this push:
     new af316513e IDP-2069 Null handling
af316513e is described below

commit af316513ebffe999f6ef49a576724262bf195c5f
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Thu Mar 2 19:56:03 2023 +0000

    IDP-2069 Null handling
    
    https://shibboleth.atlassian.net/browse/IDP-2069
    
    Cleanup idp-cli
---
 .../idp/cli/AbstractCommandLineArguments.java        |  7 ++++---
 .../idp/cli/AbstractIdPHomeAwareCommandLine.java     | 11 ++++++-----
 .../src/main/java/net/shibboleth/idp/cli/CLI.java    |  1 +
 .../net/shibboleth/idp/cli/DataSealerArguments.java  |  4 +++-
 .../java/net/shibboleth/idp/cli/DataSealerCLI.java   | 20 ++++++++++++++------
 .../shibboleth/idp/cli/MetadataQueryArguments.java   |  2 +-
 .../shibboleth/idp/cli/ReloadMetadataArguments.java  |  2 +-
 .../shibboleth/idp/cli/ReloadServiceArguments.java   |  2 +-
 .../shibboleth/idp/cli/ResolverTestArguments.java    |  7 ++++---
 .../java/net/shibboleth/idp/cli/StatusArguments.java |  2 +-
 .../shibboleth/idp/cli/impl/JarCheckArguments.java   |  1 +
 .../net/shibboleth/idp/cli/impl/JarCheckCLI.java     |  6 ++++--
 .../idp/cli/impl/ModuleManagerArguments.java         | 18 ++++++++++--------
 .../shibboleth/idp/cli/impl/ModuleManagerCLI.java    | 14 +++++++++++---
 14 files changed, 62 insertions(+), 35 deletions(-)

diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractCommandLineArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractCommandLineArguments.java
index 3686b8d0f..0a84fb7ae 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractCommandLineArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractCommandLineArguments.java
@@ -202,12 +202,13 @@ public abstract class AbstractCommandLineArguments implements CommandLineArgumen
     @Nullable @NotEmpty public String getMethod() {
         return StringSupport.trimOrNull(method);
     }
-    
+
     /** {@inheritDoc} */
     @Nullable @NonnullElements @NotLive @Unmodifiable public Map<String,String> getHeaders() {
-        if (headers != null) {
+        final List<String> hdrs = headers;
+        if (hdrs != null) {
             final Map<String,String> map = new HashMap<>();
-            final Iterator<String> iter = headers.iterator();
+            final Iterator<String> iter = hdrs.iterator();
             while (iter.hasNext()) {
                 final String h = iter.next();
                 if (iter.hasNext()) {
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractIdPHomeAwareCommandLine.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractIdPHomeAwareCommandLine.java
index 08d4b23f0..2dd6a91c4 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractIdPHomeAwareCommandLine.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/AbstractIdPHomeAwareCommandLine.java
@@ -75,20 +75,21 @@ public abstract class AbstractIdPHomeAwareCommandLine<T extends AbstractIdPHomeA
             return rc;
         }
         
-        if (args.getHttpClientName() != null) {
+        final String clientName = args.getHttpClientName();
+        if (clientName != null) {
             try {
-                httpClient = getApplicationContext().getBean(args.getHttpClientName(), HttpClient.class);
+                httpClient = getApplicationContext().getBean(clientName, HttpClient.class);
             } catch (final NoSuchBeanDefinitionException e) {
                 getLogger().error("Could not locate HttpClient '{}'", args.getHttpClientName());
                 return RC_IO;
             }
         }
         
-        if (args.getHttpClientSecurityParameterstName() != null) {
+        final String securityParameterstName = args.getHttpClientSecurityParameterstName();
+        if (securityParameterstName != null) {
             try {
                 httpClientSecurityParameters =
-                        getApplicationContext().getBean(args.getHttpClientSecurityParameterstName(),
-                                HttpClientSecurityParameters.class);
+                        getApplicationContext().getBean(securityParameterstName, HttpClientSecurityParameters.class);
             } catch (final NoSuchBeanDefinitionException e) {
                 getLogger().error("Could not locate HttpClientSecurityParameters '{}'",
                         args.getHttpClientSecurityParameterstName());
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/CLI.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/CLI.java
index 214c91169..84e82f117 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/CLI.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/CLI.java
@@ -85,6 +85,7 @@ public final class CLI {
         } catch (final InstantiationException | IllegalAccessException e) {
             errorAndExit(e.getMessage());
         }
+        assert argObject != null;
         
         try {
             argObject.validate();
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/DataSealerArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/DataSealerArguments.java
index e699d3862..0a2f39ec3 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/DataSealerArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/DataSealerArguments.java
@@ -19,6 +19,7 @@ package net.shibboleth.idp.cli;
 
 import java.io.PrintStream;
 
+import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.slf4j.Logger;
@@ -56,10 +57,11 @@ public class DataSealerArguments extends AbstractIdPHomeAwareCommandLineArgument
     @Nullable private OperationType operation;
 
     /** {@inheritDoc} */
-    public Logger getLog() {
+    public @Nonnull Logger getLog() {
         if (log == null) {
             log = LoggerFactory.getLogger(DataSealerArguments.class);
         }
+        assert log != null;
         return log;
     }
 
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/DataSealerCLI.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/DataSealerCLI.java
index 17ae89aa6..a5b613765 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/DataSealerCLI.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/DataSealerCLI.java
@@ -23,6 +23,7 @@ import javax.annotation.Nullable;
 import org.slf4j.Logger;
 
 import net.shibboleth.idp.Version;
+import net.shibboleth.idp.cli.DataSealerArguments.OperationType;
 import net.shibboleth.shared.annotation.constraint.NotEmpty;
 import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.security.DataSealer;
@@ -43,6 +44,7 @@ public class DataSealerCLI extends AbstractIdPHomeAwareCommandLine<DataSealerArg
         if (log == null) {
             log = LoggerFactory.getLogger(DataSealerCLI.class);
         }
+        assert log!=null;
         return log;
     }
     
@@ -55,7 +57,9 @@ public class DataSealerCLI extends AbstractIdPHomeAwareCommandLine<DataSealerArg
     /** {@inheritDoc} */
     @Override
     @Nonnull @NotEmpty protected String getVersion() {
-        return Version.getVersion();
+        final String result = Version.getVersion();
+        assert result!=null;
+        return result;
     }
     
     /** {@inheritDoc} */
@@ -68,18 +72,22 @@ public class DataSealerCLI extends AbstractIdPHomeAwareCommandLine<DataSealerArg
         
         try {
             final DataSealer sealer;
-            if (args.getDataSealerName() != null) {
-                sealer = getApplicationContext().getBean(args.getDataSealerName(), DataSealer.class);
+            final String sealerName =  args.getDataSealerName();
+            if (sealerName != null) {
+                sealer = getApplicationContext().getBean(sealerName, DataSealer.class);
             } else {
                 sealer = getApplicationContext().getBean(DataSealer.class);
             }
 
-            switch (args.getOperation()) {
+            final OperationType op = args.getOperation();
+            final String arg2 = args.getOtherArgs().get(2);
+            assert arg2 != null && op != null;
+            switch (op) {
                 case WRAP:
-                    System.out.println(sealer.wrap(args.getOtherArgs().get(2)));
+                    System.out.println(sealer.wrap(arg2));
                     break;
                 case UNWRAP:
-                    System.out.println(sealer.unwrap(args.getOtherArgs().get(2)));
+                    System.out.println(sealer.unwrap(arg2));
                     break;
                     
                 default:
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/MetadataQueryArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/MetadataQueryArguments.java
index 0a5c5c619..611d308c3 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/MetadataQueryArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/MetadataQueryArguments.java
@@ -74,7 +74,7 @@ public class MetadataQueryArguments extends AbstractCommandLineArguments {
 
     /** {@inheritDoc} */
     @Override
-    protected StringBuilder doBuildURL(@Nonnull final StringBuilder builder) {
+    protected @Nonnull StringBuilder doBuildURL(@Nonnull final StringBuilder builder) {
         
         if (getPath() == null) {
             builder.append("/profile/admin/mdquery");
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/ReloadMetadataArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/ReloadMetadataArguments.java
index ee1a5fe68..2ebf764d5 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/ReloadMetadataArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/ReloadMetadataArguments.java
@@ -34,7 +34,7 @@ public class ReloadMetadataArguments extends AbstractCommandLineArguments {
 
     /** {@inheritDoc} */
     @Override
-    protected StringBuilder doBuildURL(@Nonnull final StringBuilder builder) {
+    protected @Nonnull StringBuilder doBuildURL(@Nonnull final StringBuilder builder) {
         
         if (getPath() == null) {
             builder.append("/profile/admin/reload-metadata");
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/ReloadServiceArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/ReloadServiceArguments.java
index c03d28ff7..19b61d161 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/ReloadServiceArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/ReloadServiceArguments.java
@@ -34,7 +34,7 @@ public class ReloadServiceArguments extends AbstractCommandLineArguments {
 
     /** {@inheritDoc} */
     @Override
-    protected StringBuilder doBuildURL(@Nonnull final StringBuilder builder) {
+    protected @Nonnull StringBuilder doBuildURL(@Nonnull final StringBuilder builder) {
         
         if (getPath() == null) {
             builder.append("/profile/admin/reload-service");
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/ResolverTestArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/ResolverTestArguments.java
index 92af7c346..2fcd57dfd 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/ResolverTestArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/ResolverTestArguments.java
@@ -93,7 +93,7 @@ public class ResolverTestArguments extends AbstractCommandLineArguments {
 
     /** {@inheritDoc} */
     @Override
-    protected StringBuilder doBuildURL(@Nonnull final StringBuilder builder) {
+    protected @Nonnull StringBuilder doBuildURL(@Nonnull final StringBuilder builder) {
         
         if (getPath() == null) {
             builder.append("/profile/admin/resolvertest");
@@ -108,8 +108,9 @@ public class ResolverTestArguments extends AbstractCommandLineArguments {
         try {
             builder.append("requester=").append(URLEncoder.encode(requester, "UTF-8"));
             builder.append("&principal=").append(URLEncoder.encode(principal, "UTF-8"));
-            if (index != null) {
-                builder.append("&acsIndex").append(index.toString());
+            final Integer idx = index;
+            if (idx != null) {
+                builder.append("&acsIndex").append(idx.toString());
             }
             if (saml1) {
                 builder.append("&saml1");
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/StatusArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/StatusArguments.java
index 0a121926e..fb3d362ce 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/StatusArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/StatusArguments.java
@@ -24,7 +24,7 @@ public class StatusArguments extends AbstractCommandLineArguments {
 
     /** {@inheritDoc} */
     @Override
-    protected StringBuilder doBuildURL(@Nonnull final StringBuilder builder) {
+    protected @Nonnull StringBuilder doBuildURL(@Nonnull final StringBuilder builder) {
         
         if (getPath() == null) {
             builder.append("/status");
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/JarCheckArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/JarCheckArguments.java
index b8f6c3998..3830a76c7 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/JarCheckArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/JarCheckArguments.java
@@ -50,6 +50,7 @@ public class JarCheckArguments extends AbstractIdPHomeAwareCommandLineArguments
         if (log == null) {
             log = LoggerFactory.getLogger(JarCheckArguments.class);
         }
+        assert log!=null;
         return log;
     }
     
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/JarCheckCLI.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/JarCheckCLI.java
index aefabc771..175921a23 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/JarCheckCLI.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/JarCheckCLI.java
@@ -148,8 +148,10 @@ public final class JarCheckCLI extends AbstractIdPHomeAwareCommandLine<JarCheckA
     }
 
     /** {@inheritDoc} */
-    protected String getVersion() {
-        return Version.getVersion();
+    protected @Nonnull String getVersion() {
+        final String result = Version.getVersion();
+        assert result!=null;
+        return result;
     }
 
     /** {@inheritDoc} */
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/ModuleManagerArguments.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/ModuleManagerArguments.java
index 2e4192a98..2a6eb2e6f 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/ModuleManagerArguments.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/ModuleManagerArguments.java
@@ -34,6 +34,7 @@ import net.shibboleth.idp.module.IdPModule;
 import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotLive;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
+import net.shibboleth.shared.collection.CollectionSupport;
 import net.shibboleth.shared.primitive.LoggerFactory;
 import net.shibboleth.shared.primitive.StringSupport;
 
@@ -74,6 +75,7 @@ public class ModuleManagerArguments extends AbstractIdPHomeAwareCommandLineArgum
         if (log == null) {
             log = LoggerFactory.getLogger(ModuleManagerArguments.class);
         }
+        assert log!=null;
         return log;
     }
 
@@ -91,8 +93,8 @@ public class ModuleManagerArguments extends AbstractIdPHomeAwareCommandLineArgum
      * 
      * @return module ID(s) to report on
      */
-    @Nullable @NonnullElements @NotLive @Unmodifiable public Collection<String> getInfoModuleIds() {
-        return List.copyOf(StringSupport.normalizeStringCollection(infoModuleIds));
+    @Nonnull @NonnullElements @NotLive @Unmodifiable public Collection<String> getInfoModuleIds() {
+        return CollectionSupport.copyToList(StringSupport.normalizeStringCollection(infoModuleIds));
     }
 
     /**
@@ -100,8 +102,8 @@ public class ModuleManagerArguments extends AbstractIdPHomeAwareCommandLineArgum
      * 
      * @return module ID(s) to test
      */
-    @Nullable @NonnullElements @NotLive @Unmodifiable public Collection<String> getTestModuleIds() {
-        return List.copyOf(StringSupport.normalizeStringCollection(testModuleIds));
+    @Nonnull @NonnullElements @NotLive @Unmodifiable public Collection<String> getTestModuleIds() {
+        return CollectionSupport.copyToList(StringSupport.normalizeStringCollection(testModuleIds));
     }
 
     /**
@@ -109,8 +111,8 @@ public class ModuleManagerArguments extends AbstractIdPHomeAwareCommandLineArgum
      * 
      * @return module ID(s) to enable
      */
-    @Nullable @NonnullElements @NotLive @Unmodifiable public Collection<String> getEnableModuleIds() {
-        return List.copyOf(StringSupport.normalizeStringCollection(enableModuleIds));
+    @Nonnull @NonnullElements @NotLive @Unmodifiable public Collection<String> getEnableModuleIds() {
+        return CollectionSupport.copyToList(StringSupport.normalizeStringCollection(enableModuleIds));
     }
     
     /**
@@ -118,8 +120,8 @@ public class ModuleManagerArguments extends AbstractIdPHomeAwareCommandLineArgum
      * 
      * @return module ID(s) to disable
      */
-    @Nullable @NonnullElements @NotLive @Unmodifiable public Collection<String> getDisableModuleIds() {
-        return List.copyOf(StringSupport.normalizeStringCollection(disableModuleIds));
+    @Nonnull @NonnullElements @NotLive @Unmodifiable public Collection<String> getDisableModuleIds() {
+        return CollectionSupport.copyToList(StringSupport.normalizeStringCollection(disableModuleIds));
     }
 
     /**
diff --git a/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/ModuleManagerCLI.java b/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/ModuleManagerCLI.java
index ac6f8012c..2df54d925 100644
--- a/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/ModuleManagerCLI.java
+++ b/idp-cli/src/main/java/net/shibboleth/idp/cli/impl/ModuleManagerCLI.java
@@ -34,6 +34,7 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 
 import org.slf4j.Logger;
+import org.springframework.core.env.ConfigurableEnvironment;
 import org.springframework.core.io.ClassPathResource;
 import org.springframework.core.io.Resource;
 
@@ -50,6 +51,7 @@ import net.shibboleth.shared.annotation.constraint.NonnullElements;
 import net.shibboleth.shared.annotation.constraint.NotLive;
 import net.shibboleth.shared.annotation.constraint.Unmodifiable;
 import net.shibboleth.shared.collection.CollectionSupport;
+import net.shibboleth.shared.logic.Constraint;
 import net.shibboleth.shared.primitive.LoggerFactory;
 
 /**
@@ -66,6 +68,7 @@ public final class ModuleManagerCLI extends AbstractIdPHomeAwareCommandLine<Modu
         if (log == null) {
             log = LoggerFactory.getLogger(ModuleManagerCLI.class);
         }
+        assert log!=null;
         return log;
     }
 
@@ -77,8 +80,10 @@ public final class ModuleManagerCLI extends AbstractIdPHomeAwareCommandLine<Modu
 
     /** {@inheritDoc} */
     @Override
-    protected String getVersion() {
-        return Version.getVersion();
+    protected @Nonnull String getVersion() {
+        final String result = Version.getVersion();
+        assert result!=null;
+        return result;
     }
     
     /** {@inheritDoc} */
@@ -96,8 +101,11 @@ public final class ModuleManagerCLI extends AbstractIdPHomeAwareCommandLine<Modu
         }
 
         try {
+            final ConfigurableEnvironment env = getApplicationContext().getEnvironment();
+            assert env != null;
+            final String idpHome = Constraint.isNotNull(env.getProperty("idp.home"), "Property 'idp.home' not set");
             final ModuleContext moduleContext =
-                    new ModuleContext(getApplicationContext().getEnvironment().getProperty("idp.home"));
+                    new ModuleContext(idpHome);
             moduleContext.setHttpClient(getHttpClient());
             moduleContext.setHttpClientSecurityParameters(getHttpClientSecurityParameters());
             moduleContext.setLanguageRanges(args.getLanguageRanges());

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


More information about the commits mailing list