[java-oidc-common] branch main updated: Null fixes and defaulting to NonnullElements.

Scott Cantor cantor.2 at osu.edu
Tue Oct 3 14:19:17 UTC 2023


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

scantor pushed a commit to branch main
in repository java-oidc-common.

View the commit online:
http://git.shibboleth.net/view/?p=java-oidc-common.git;a=commit;h=5aae48a60eaa35bd5e220a532f3958e83e3ef615

The following commit(s) were added to refs/heads/main by this push:
     new 5aae48a  Null fixes and defaulting to NonnullElements.
5aae48a is described below

commit 5aae48a60eaa35bd5e220a532f3958e83e3ef615
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Oct 3 10:19:14 2023 -0400

    Null fixes and defaulting to NonnullElements.
---
 .../AbstractOIDCAttributeTranscoder.java            | 21 ++++++++++++---------
 .../oidc/attribute/transcoding/package-info.java    |  4 +++-
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/AbstractOIDCAttributeTranscoder.java b/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/AbstractOIDCAttributeTranscoder.java
index 63234bb..b539319 100644
--- a/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/AbstractOIDCAttributeTranscoder.java
+++ b/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/AbstractOIDCAttributeTranscoder.java
@@ -14,7 +14,6 @@
 
 package net.shibboleth.oidc.attribute.transcoding;
 
-import java.util.Collections;
 import java.util.List;
 import java.util.Set;
 import java.util.function.Function;
@@ -24,7 +23,6 @@ import javax.annotation.Nullable;
 
 import org.opensaml.profile.context.ProfileRequestContext;
 import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Strings;
 import com.nimbusds.openid.connect.sdk.claims.ClaimRequirement;
@@ -40,7 +38,8 @@ import net.shibboleth.idp.attribute.IdPRequestedAttribute;
 import net.shibboleth.idp.attribute.transcoding.AbstractAttributeTranscoder;
 import net.shibboleth.idp.attribute.transcoding.AttributeTranscoderRegistry;
 import net.shibboleth.idp.attribute.transcoding.TranscodingRule;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
+import net.shibboleth.shared.collection.CollectionSupport;
+import net.shibboleth.shared.primitive.LoggerFactory;
 
 /**
  * Abstract class for OIDC attribute encoders.
@@ -53,7 +52,7 @@ public abstract class AbstractOIDCAttributeTranscoder
 
     /** {@inheritDoc} */
     @Override
-    public Class<JSONObject> getEncodedType() {
+    @Nonnull public Class<JSONObject> getEncodedType() {
         return JSONObject.class;
     }
 
@@ -104,13 +103,16 @@ public abstract class AbstractOIDCAttributeTranscoder
      */
     @Nonnull protected JSONObject buildClaim(@Nullable final ProfileRequestContext profileRequestContext,
             @Nullable final IdPAttribute attribute, @Nonnull final TranscodingRule rule,
-            @Nonnull @NonnullElements final Object claimValues) throws AttributeEncodingException {
+            @Nullable final Object claimValues) throws AttributeEncodingException {
         
         if (claimValues == null) {
             throw new AttributeEncodingException("Unable to build OIDC claim with no value(s)");
         }
     
-        final String name = rule.getOrDefault(PROP_NAME, String.class, attribute.getId());
+        final String name = rule.getOrDefault(PROP_NAME, String.class, attribute != null ? attribute.getId() : null);
+        if (Strings.isNullOrEmpty(name)) {
+            throw new AttributeEncodingException("Required transcoder property '" + PROP_NAME + "' not found");
+        }
         
         final JSONObject claim = new JSONObject();
         claim.put(name, claimValues);
@@ -156,7 +158,7 @@ public abstract class AbstractOIDCAttributeTranscoder
                 return buildIdPAttribute(profileRequestContext, input, rule, decodedValues);
             }    
         }
-        return buildIdPAttribute(profileRequestContext, input, rule, Collections.emptyList());
+        return buildIdPAttribute(profileRequestContext, input, rule, CollectionSupport.emptyList());
     }
 
     /**
@@ -173,12 +175,13 @@ public abstract class AbstractOIDCAttributeTranscoder
      */
     @Nonnull protected IdPAttribute buildIdPAttribute(@Nullable final ProfileRequestContext profileRequestContext,
             @Nonnull final JSONObject claim, @Nonnull final TranscodingRule rule,
-            @Nonnull @NonnullElements final List<IdPAttributeValue> attributeValues) throws AttributeDecodingException {
+            @Nonnull final List<IdPAttributeValue> attributeValues) throws AttributeDecodingException {
         
         final String id = rule.get(AttributeTranscoderRegistry.PROP_ID, String.class);
         if (Strings.isNullOrEmpty(id)) {
             throw new AttributeDecodingException("Required transcoder property 'id' not found");
         }
+        assert id != null;
 
         final String name = rule.getOrDefault(PROP_NAME, String.class, id);
 
@@ -209,7 +212,7 @@ public abstract class AbstractOIDCAttributeTranscoder
      * 
      * @throws AttributeDecodingException if there's a problem decoding the claim value
      */
-    @Nonnull @NonnullElements protected abstract List<IdPAttributeValue> decodeValues(
+    @Nonnull protected abstract List<IdPAttributeValue> decodeValues(
             @Nullable final ProfileRequestContext profileRequestContext, @Nonnull final Object input,
             @Nonnull final TranscodingRule rule) throws AttributeDecodingException;
     
diff --git a/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/package-info.java b/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/package-info.java
index 34b6fa5..25753f6 100644
--- a/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/package-info.java
+++ b/oidc-common-attribute-api/src/main/java/net/shibboleth/oidc/attribute/transcoding/package-info.java
@@ -13,5 +13,7 @@
  */
 
 /** OIDC Attribute Transcoding base classes. */
+ at NonnullElements
+package net.shibboleth.oidc.attribute.transcoding;
 
-package net.shibboleth.oidc.attribute.transcoding;
\ No newline at end of file
+import net.shibboleth.shared.annotation.constraint.NonnullElements;

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


More information about the commits mailing list