[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