[java-identity-provider] 02/02: IDP-1789 Add option to SimpleAttributeDefinition to drop null or empty values

Rod Widdowson rdw at steadingsoftware.com
Tue Apr 13 15:56:00 UTC 2021


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

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

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

commit b658e744c3328b6f60ef50e48a8f1145b503cf56
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Apr 13 16:55:18 2021 +0100

    IDP-1789 Add option to SimpleAttributeDefinition to drop null or empty values
    
    https://issues.shibboleth.net/jira/browse/IDP-1789
    
    Parsing and langue support.
---
 .../idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java   | 2 +-
 .../resolver/spring/ad/impl/SimpleAttributeDefinitionParser.java    | 6 ++++++
 .../idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java | 6 ++++--
 .../resolver/spring/ad/resolver/simpleAttributePopulated2.xml       | 1 +
 .../src/main/resources/schema/shibboleth-attribute-resolver.xsd     | 5 +++++
 5 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java
index 150b6796e..92181397a 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/ad/impl/SimpleAttributeDefinition.java
@@ -73,7 +73,7 @@ public class SimpleAttributeDefinition extends AbstractAttributeDefinition {
             result.setValues(
                     values.stream().
                     filter(e -> (e!=null) && !(e instanceof EmptyAttributeValue)).
-                    collect(Collectors.toUnmodifiableList())); 
+                    collect(Collectors.toUnmodifiableList()));
         } else {
             result.setValues(values);
         }
diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeDefinitionParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeDefinitionParser.java
index 725fdef40..821437aff 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeDefinitionParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeDefinitionParser.java
@@ -25,6 +25,7 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
 import org.springframework.beans.factory.xml.ParserContext;
 import org.w3c.dom.Element;
 
+import net.shibboleth.ext.spring.util.SpringSupport;
 import net.shibboleth.idp.attribute.resolver.ad.impl.SimpleAttributeDefinition;
 import net.shibboleth.idp.attribute.resolver.spring.ad.BaseAttributeDefinitionParser;
 import net.shibboleth.idp.attribute.resolver.spring.impl.AttributeResolverNamespaceHandler;
@@ -45,5 +46,10 @@ public class SimpleAttributeDefinitionParser extends BaseAttributeDefinitionPars
     @Override protected void doParse(@Nonnull final Element config, @Nonnull final ParserContext parserContext,
             @Nonnull final BeanDefinitionBuilder builder) {
         super.doParse(config, parserContext, builder);
+        
+        if (config.hasAttributeNS(null, "ignoreNullValues")) {
+            builder.addPropertyValue("stripNulls",
+                    SpringSupport.getStringValueAsBoolean(config.getAttributeNS(null, "ignoreNullValues")));
+        }
     }
 }
\ No newline at end of file
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java
index d248b40d0..cc1898c4e 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/SimpleAttributeParserTest.java
@@ -64,7 +64,7 @@ public class SimpleAttributeParserTest extends BaseAttributeDefinitionParserTest
     }
 
     @Test public void simplePopulated() throws ComponentInitializationException {
-        final AttributeDefinition attrDef =
+        final SimpleAttributeDefinition attrDef =
                 getAttributeDefn("resolver/simpleAttributePopulated.xml", SimpleAttributeDefinition.class);
 
         attrDef.initialize();
@@ -72,6 +72,7 @@ public class SimpleAttributeParserTest extends BaseAttributeDefinitionParserTest
         assertEquals(attrDef.getId(), "simplePopulated");
         assertTrue(attrDef.isDependencyOnly());
         assertTrue(attrDef.isPreRequested());
+        assertFalse(attrDef.isStripNulls());
 
         Set<ResolverAttributeDefinitionDependency> adDeps = attrDef.getAttributeDependencies();
         assertEquals(adDeps.size(), 2, "getAttributeDependencies");
@@ -86,7 +87,7 @@ public class SimpleAttributeParserTest extends BaseAttributeDefinitionParserTest
     }
 
     @Test public void populated2() throws ComponentInitializationException {
-        AttributeDefinition attrDef =
+        SimpleAttributeDefinition attrDef =
                 getAttributeDefn("resolver/simpleAttributePopulated2.xml", SimpleAttributeDefinition.class);
 
         attrDef.initialize();
@@ -94,6 +95,7 @@ public class SimpleAttributeParserTest extends BaseAttributeDefinitionParserTest
         assertEquals(attrDef.getId(), "simplePopulated2");
         assertFalse(attrDef.isDependencyOnly(), "isDependencyOnly");
         assertFalse(attrDef.isPreRequested());
+        assertTrue(attrDef.isStripNulls());
 
         final Set<ResolverAttributeDefinitionDependency> attrDeps = attrDef.getAttributeDependencies();
         assertEquals(attrDeps.size(), 1, "getAttributeDependencies");
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/simpleAttributePopulated2.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/simpleAttributePopulated2.xml
index bf74be053..6389a5516 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/simpleAttributePopulated2.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/ad/resolver/simpleAttributePopulated2.xml
@@ -3,6 +3,7 @@
     xmlns="urn:mace:shibboleth:2.0:resolver"
     dependencyOnly="false" preRequested="0"
     xsi:type="Simple" id="simplePopulated2"
+    ignoreNullValues="true"
     
     xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd">
  
diff --git a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
index d4ed6073d..ce24edd16 100644
--- a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
+++ b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
@@ -640,6 +640,11 @@
                     <element name="DisplayDescription" type="resolver:LocalizedStringType"/>
                     <element ref="resolver:AttributeEncoder"/>
                 </choice>
+                <attribute name="ignoreNullValues" type="resolver:string">
+                    <annotation>
+                        <documentation>Do we drop null values (default: FALSE)</documentation>
+                    </annotation>
+                </attribute>
             </extension>
         </complexContent>
     </complexType>

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


More information about the commits mailing list