[java-shib-attribute] branch main updated: IDP-2069 - Null Handling Task

Scott Cantor cantor.2 at osu.edu
Mon Mar 27 16:40:25 UTC 2023


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

scantor pushed a commit to branch main
in repository java-shib-attribute.

View the commit online:
http://git.shibboleth.net/view/?p=java-shib-attribute.git;a=commit;h=b6bf6bb4448723184f0dda5e6b58448690394224

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

commit b6bf6bb4448723184f0dda5e6b58448690394224
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Mon Mar 27 12:40:20 2023 -0400

    IDP-2069 - Null Handling Task
    
    https://shibboleth.atlassian.net/browse/IDP-2069
    
    SAML 2 XMLObject null cleanup.
---
 .../filter/matcher/saml/impl/AttributeInMetadataMatcher.java     | 8 ++++++--
 .../policyrule/saml/impl/IssuerRegistrationAuthorityTest.java    | 6 ++++--
 .../policyrule/saml/impl/RequesterRegistrationAuthorityTest.java | 6 ++++--
 .../resolver/spring/AttributeMappingNodeProcessorTest.java       | 9 +++++----
 .../attribute/transcoding/AbstractSAML2AttributeTranscoder.java  | 7 +++++--
 .../transcoding/impl/SAML2ByteAttributeTranscoderTest.java       | 3 ++-
 .../transcoding/impl/SAML2DateTimeAttributeTranscoderTest.java   | 3 ++-
 .../impl/SAML2ScopedStringAttributeTranscoderTest.java           | 3 ++-
 .../transcoding/impl/SAML2StringAttributeTranscoderTest.java     | 3 ++-
 .../transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java  | 3 ++-
 10 files changed, 34 insertions(+), 17 deletions(-)

diff --git a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AttributeInMetadataMatcher.java b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AttributeInMetadataMatcher.java
index 28682ed63..536b60c37 100644
--- a/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AttributeInMetadataMatcher.java
+++ b/shib-attribute-filter-impl/src/main/java/net/shibboleth/idp/attribute/filter/matcher/saml/impl/AttributeInMetadataMatcher.java
@@ -207,7 +207,11 @@ public class AttributeInMetadataMatcher extends AbstractIdentifiableInitializabl
                 return CollectionSupport.emptySet();
             }
         
-            if (onlyIfRequired && !requestedAttribute.isRequired()) {
+            Boolean isRequired = requestedAttribute.isRequired();
+            if (isRequired == null) {
+                isRequired = false;
+            }
+            if (onlyIfRequired && !isRequired) {
                 log.debug("{} Attribute {} found in metadata, but was not required, values not matched",
                         getLogPrefix(), attributeToLog);
                 return CollectionSupport.emptySet();
@@ -319,7 +323,7 @@ public class AttributeInMetadataMatcher extends AbstractIdentifiableInitializabl
         
         final List<RequestedAttribute> requested = service.getRequestedAttributes();
         for (final RequestedAttribute attr : requested) {
-            if (attr.getName().equals(name)) {
+            if (name.equals(attr.getName())) {
                 final String format = attr.getNameFormat();
                 if (nameFormat == null || format == null || format.equals(Attribute.UNSPECIFIED)
                         || nameFormat.equals(format)) {
diff --git a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/IssuerRegistrationAuthorityTest.java b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/IssuerRegistrationAuthorityTest.java
index 52ff902b5..380cecbf8 100644
--- a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/IssuerRegistrationAuthorityTest.java
+++ b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/IssuerRegistrationAuthorityTest.java
@@ -22,6 +22,8 @@ import static org.testng.Assert.fail;
 
 import java.util.Arrays;
 
+import javax.annotation.Nullable;
+
 import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.testng.annotations.BeforeClass;
@@ -50,9 +52,9 @@ public class IssuerRegistrationAuthorityTest extends BaseMetadataTests {
         metadata = unmarshallElement("/net/shibboleth/idp/filter/impl/saml/mdrpi-metadata.xml");
     }
 
-    private EntityDescriptor getEntity(String entityID) {
+    @Nullable private EntityDescriptor getEntity(String entityID) {
         for (EntityDescriptor entity : metadata.getEntityDescriptors()) {
-            if (entity.getEntityID().equals(entityID)) {
+            if (entityID.equals(entity.getEntityID())) {
                 return entity;
             }
         }
diff --git a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/RequesterRegistrationAuthorityTest.java b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/RequesterRegistrationAuthorityTest.java
index a9e1772e2..28fd3ed37 100644
--- a/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/RequesterRegistrationAuthorityTest.java
+++ b/shib-attribute-filter-impl/src/test/java/net/shibboleth/idp/attribute/filter/policyrule/saml/impl/RequesterRegistrationAuthorityTest.java
@@ -22,6 +22,8 @@ import static org.testng.Assert.fail;
 
 import java.util.Arrays;
 
+import javax.annotation.Nullable;
+
 import org.opensaml.saml.saml2.metadata.EntitiesDescriptor;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
 import org.testng.annotations.BeforeClass;
@@ -50,9 +52,9 @@ public class RequesterRegistrationAuthorityTest extends BaseMetadataTests {
         metadata = unmarshallElement("/net/shibboleth/idp/filter/impl/saml/mdrpi-metadata.xml");
     }
 
-    private EntityDescriptor getEntity(String entityID) {
+    @Nullable private EntityDescriptor getEntity(String entityID) {
         for (EntityDescriptor entity : metadata.getEntityDescriptors()) {
-            if (entity.getEntityID().equals(entityID)) {
+            if (entityID.equals(entity.getEntityID())) {
                 return entity;
             }
         }
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMappingNodeProcessorTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMappingNodeProcessorTest.java
index a6e2a64ca..fd2b41687 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMappingNodeProcessorTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/AttributeMappingNodeProcessorTest.java
@@ -31,6 +31,7 @@ import org.opensaml.core.testing.XMLObjectBaseTestCase;
 import org.opensaml.saml.metadata.resolver.filter.FilterException;
 import org.opensaml.saml.saml2.metadata.AttributeConsumingService;
 import org.opensaml.saml.saml2.metadata.EntityDescriptor;
+import org.opensaml.saml.saml2.metadata.SPSSODescriptor;
 import org.springframework.context.support.ConversionServiceFactoryBean;
 import org.springframework.context.support.GenericApplicationContext;
 import org.testng.annotations.AfterClass;
@@ -137,10 +138,10 @@ public class AttributeMappingNodeProcessorTest extends XMLObjectBaseTestCase {
     @Test public void requiredAttributes() throws FilterException {
 
         assert entityDescriptor != null;
-        final AttributeConsumingService acs =
-                entityDescriptor.getSPSSODescriptor("urn:oasis:names:tc:SAML:1.1:protocol")
-                        .getDefaultAttributeConsumingService();
-
+        final SPSSODescriptor role = entityDescriptor.getSPSSODescriptor("urn:oasis:names:tc:SAML:1.1:protocol");
+        final AttributeConsumingService acs = role != null ? role.getDefaultAttributeConsumingService() : null;
+        assert acs != null;
+        
         assertTrue(acs.getObjectMetadata().get(AttributesMapContainer.class).isEmpty());
 
         assert processor != null;
diff --git a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java
index 43e65e1bd..9a4033a88 100644
--- a/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java
+++ b/shib-saml-attribute-api/src/main/java/net/shibboleth/idp/saml/attribute/transcoding/AbstractSAML2AttributeTranscoder.java
@@ -144,9 +144,12 @@ public abstract class AbstractSAML2AttributeTranscoder<EncodedType extends IdPAt
         assert id != null;
         
         final IdPAttribute idpAttribute;
-        if (attribute instanceof RequestedAttribute) {
+        if (attribute instanceof RequestedAttribute reqAttribute) {
             idpAttribute = new IdPRequestedAttribute(id);
-            ((IdPRequestedAttribute) idpAttribute).setRequired(((RequestedAttribute) attribute).isRequired());
+            final Boolean isRequired = reqAttribute.isRequired();
+            if (isRequired != null) {
+                ((IdPRequestedAttribute) idpAttribute).setRequired(isRequired);
+            }
         } else {
             idpAttribute = new IdPAttribute(id);
         }
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java
index 6f041571b..4a11e8f2e 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ByteAttributeTranscoderTest.java
@@ -263,7 +263,8 @@ public class SAML2ByteAttributeTranscoderTest extends OpenSAMLInitBaseTestCase {
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
-        Assert.assertTrue(attr.isRequired());
+        final Boolean isRequired = attr.isRequired();
+        Assert.assertTrue(isRequired != null && isRequired);
 
         final List<XMLObject> children = attr.getOrderedChildren();
         assert children != null;
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2DateTimeAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2DateTimeAttributeTranscoderTest.java
index fc92c8b9a..09d310d03 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2DateTimeAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2DateTimeAttributeTranscoderTest.java
@@ -289,7 +289,8 @@ public class SAML2DateTimeAttributeTranscoderTest extends OpenSAMLInitBaseTestCa
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
-        Assert.assertTrue(attr.isRequired());
+        final Boolean isRequired = attr.isRequired();
+        Assert.assertTrue(isRequired != null && isRequired);
 
         final List<XMLObject> children = attr.getOrderedChildren();
         assert children != null;
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java
index 96e529517..6dc7c57be 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2ScopedStringAttributeTranscoderTest.java
@@ -267,7 +267,8 @@ public class SAML2ScopedStringAttributeTranscoderTest extends OpenSAMLInitBaseTe
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
-        Assert.assertTrue(attr.isRequired());
+        final Boolean isRequired = attr.isRequired();
+        Assert.assertTrue(isRequired != null && isRequired);
 
         final List<XMLObject> children = attr.getOrderedChildren();
         assert children != null;
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java
index 863c20734..4d157cf26 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2StringAttributeTranscoderTest.java
@@ -255,7 +255,8 @@ public class SAML2StringAttributeTranscoderTest extends OpenSAMLInitBaseTestCase
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
-        Assert.assertTrue(attr.isRequired());
+        final Boolean isRequired = attr.isRequired();
+        Assert.assertTrue(isRequired != null && isRequired);
 
         final List<XMLObject> children = attr.getOrderedChildren();
         assert children != null;
diff --git a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java
index 3b3c2180f..2cd3d7f39 100644
--- a/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java
+++ b/shib-saml-attribute-impl/src/test/java/net/shibboleth/idp/saml/attribute/transcoding/impl/SAML2XMLObjectAttributeTranscoderTest.java
@@ -261,7 +261,8 @@ public class SAML2XMLObjectAttributeTranscoderTest extends OpenSAMLInitBaseTestC
         Assert.assertEquals(attr.getName(), ATTR_NAME);
         Assert.assertEquals(attr.getNameFormat(), ATTR_NAMEFORMAT);
         Assert.assertEquals(attr.getFriendlyName(), ATTR_FRIENDLYNAME);
-        Assert.assertTrue(attr.isRequired());
+        final Boolean isRequired = attr.isRequired();
+        Assert.assertTrue(isRequired != null && isRequired);
 
         final List<XMLObject> children = attr.getOrderedChildren();
         assert children != null;

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


More information about the commits mailing list