[java-shib-attribute] branch main updated: JSATTR-4 Remove springResources from data connector

Rod Widdowson rdw at steadingsoftware.com
Tue Oct 25 12:17:42 UTC 2022


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

rdw 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=98940ef1cbb04ccb98eb9fb2ac2b479d9e6c6543

The following commit(s) were added to refs/heads/main by this push:
     new 98940ef1c JSATTR-4 Remove springResources from data connector
98940ef1c is described below

commit 98940ef1cbb04ccb98eb9fb2ac2b479d9e6c6543
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Tue Oct 25 11:18:02 2022 +0100

    JSATTR-4 Remove springResources from data connector
    
    https://shibboleth.atlassian.net/browse/JSATTR-4
    
    add 'attributeListRef="bean"' to the Static Data Connector.
---
 .../spring/dc/impl/StaticDataConnectorParser.java       |  9 +++++++++
 .../resources/schema/shibboleth-attribute-resolver.xsd  |  7 +++++++
 .../spring/ad/impl/SimpleAttributeParserTest.java       |  4 +++-
 .../spring/dc/impl/StaticDataConnectorParserTest.java   | 17 ++++++++++++++++-
 .../idp/attribute/resolver/spring/customBean.xml        | 16 ++++++++++++++++
 .../resolver/spring/dc/resolver/staticAttributesRef.xml | 10 ++++++++++
 6 files changed, 61 insertions(+), 2 deletions(-)

diff --git a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StaticDataConnectorParser.java b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StaticDataConnectorParser.java
index 8b0be5770..672b3c8ae 100644
--- a/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StaticDataConnectorParser.java
+++ b/shib-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StaticDataConnectorParser.java
@@ -63,6 +63,15 @@ public class StaticDataConnectorParser extends AbstractDataConnectorParser {
         
         final List<Element> children = ElementSupport.getChildElements(config, ATTRIBUTE_ELEMENT_NAME_RESOLVER);
         final List<BeanDefinition> attributes = new ManagedList<>(children.size());
+        final String attrListRef = StringSupport.trimOrNull(config.getAttributeNS(null, "attributeListRef"));
+        if (null != attrListRef) {
+            if (children.size() > 0) {
+                log.error("{} : 'attributeListRef' is incompatible with <Attribute/> elements, ignoring them",
+                        getLogPrefix());
+            }
+            builder.addPropertyReference("values", attrListRef);
+            return;
+        }
 
         for (final Element child : children) {
 
diff --git a/shib-attribute-resolver-spring/src/main/resources/schema/shibboleth-attribute-resolver.xsd b/shib-attribute-resolver-spring/src/main/resources/schema/shibboleth-attribute-resolver.xsd
index 714085c97..5341fd526 100644
--- a/shib-attribute-resolver-spring/src/main/resources/schema/shibboleth-attribute-resolver.xsd
+++ b/shib-attribute-resolver-spring/src/main/resources/schema/shibboleth-attribute-resolver.xsd
@@ -1523,6 +1523,13 @@
                         </complexType>
                     </element>
                 </choice>
+                <attribute name="attributeListRef" type="resolver:string">
+                    <annotation>
+                        <documentation>
+                            The name of a bean defined somewhere else which describes a List of IdPAttributes
+                        </documentation>
+                    </annotation>
+                </attribute>
             </extension>
         </complexContent>
     </complexType>
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeParserTest.java
index 469966f1c..d84de6fa1 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/ad/impl/SimpleAttributeParserTest.java
@@ -20,6 +20,7 @@ package net.shibboleth.idp.attribute.resolver.spring.ad.impl;
 import static org.testng.Assert.*;
 
 import java.util.Collection;
+import java.util.Map;
 import java.util.Set;
 import java.util.function.Predicate;
 
@@ -58,7 +59,8 @@ public class SimpleAttributeParserTest extends BaseAttributeDefinitionParserTest
         assertFalse(attrDef.isPreRequested());
         assertEquals(attrDef.getAttributeDependencies().size(), 1);
         
-        assertTrue(pendingTeardownContext.getBeansOfType(Collection.class).isEmpty());
+        final Map<String, Collection> beans = pendingTeardownContext.getBeansOfType(Collection.class);
+        assertTrue(beans.isEmpty() || (beans.size() == 1  && beans.containsKey("StaticConnectorValues")));
     }
 
     @Test public void simplePopulated() throws ComponentInitializationException {
diff --git a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StaticDataConnectorParserTest.java b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StaticDataConnectorParserTest.java
index 48148cb56..ee294c1fb 100644
--- a/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StaticDataConnectorParserTest.java
+++ b/shib-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/impl/StaticDataConnectorParserTest.java
@@ -29,7 +29,6 @@ import net.shibboleth.idp.attribute.IdPAttribute;
 import net.shibboleth.idp.attribute.IdPAttributeValue;
 import net.shibboleth.idp.attribute.StringAttributeValue;
 import net.shibboleth.idp.attribute.resolver.dc.impl.StaticDataConnector;
-import net.shibboleth.idp.attribute.resolver.spring.dc.impl.StaticDataConnectorParser;
 import net.shibboleth.idp.attribute.resolver.spring.testing.BaseAttributeDefinitionParserTest;
 
 /**
@@ -61,6 +60,22 @@ public class StaticDataConnectorParserTest extends BaseAttributeDefinitionParser
     @Test public void hybrid() {
         final StaticDataConnector connector = getDataConnector("resolver/staticAttributesHybrid.xml", StaticDataConnector.class);
         assertTrue(connector.isExportAllAttributes());
+
+        assertEquals(connector.getAttributes().keySet().size(), 2);
+        final IdPAttribute epe = connector.getAttributes().get("eduPersonEntitlement");
+        List<IdPAttributeValue> values = epe.getValues();
+        assertEquals(values.size(), 2);
+        assertTrue(values.contains(new StringAttributeValue("urn:example.org:entitlement:entitlement1")));
+        assertTrue(values.contains(new StringAttributeValue("urn:mace:dir:entitlement:common-lib-terms")));
+
+        values = connector.getAttributes().get("staticEpA").getValues();
+        assertEquals(values.size(), 1);
+        assertTrue(values.contains(new StringAttributeValue("member")));
+    }
+
+    @Test public void ref() {
+        final StaticDataConnector connector = getDataConnector("resolver/staticAttributesRef.xml", StaticDataConnector.class);
+        assertTrue(connector.isExportAllAttributes());
         
         assertEquals(connector.getAttributes().keySet().size(), 2);
         final IdPAttribute epe = connector.getAttributes().get("eduPersonEntitlement");
diff --git a/shib-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/customBean.xml b/shib-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/customBean.xml
index 4912f5f70..aaabf259d 100644
--- a/shib-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/customBean.xml
+++ b/shib-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/customBean.xml
@@ -50,6 +50,22 @@
     <bean id="SAML1XMLObjectTranscoder"
         class="net.shibboleth.idp.saml.attribute.transcoding.impl.SAML1XMLObjectAttributeTranscoder" />
 
+    <util:list id="StaticConnectorValues">
+        <bean class="net.shibboleth.idp.attribute.IdPAttribute" c:attributeId="staticEpA">
+            <property name="values">
+                <bean class="net.shibboleth.idp.attribute.StringAttributeValue" c:attributeValue="member" />
+            </property>
+        </bean>
+        <bean class="net.shibboleth.idp.attribute.IdPAttribute" c:attributeId="eduPersonEntitlement">
+            <property name="values">
+                <list>
+                    <bean class="net.shibboleth.idp.attribute.StringAttributeValue" c:attributeValue="urn:example.org:entitlement:entitlement1" />
+                    <bean class="net.shibboleth.idp.attribute.StringAttributeValue" c:attributeValue="urn:mace:dir:entitlement:common-lib-terms" />
+                </list>
+            </property>
+        </bean>
+    </util:list>
+
 </beans>
 
        
\ No newline at end of file
diff --git a/shib-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/resolver/staticAttributesRef.xml b/shib-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/resolver/staticAttributesRef.xml
new file mode 100644
index 000000000..6b76e1cf7
--- /dev/null
+++ b/shib-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/resolver/staticAttributesRef.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<DataConnector id="staticAttributes" xsi:type="Static"
+    exportAllAttributes="true"
+    xmlns="urn:mace:shibboleth:2.0:resolver"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="urn:mace:shibboleth:2.0:resolver http://shibboleth.net/schema/idp/shibboleth-attribute-resolver.xsd"
+    attributeListRef="StaticConnectorValues">
+    <Attribute id="staticEpA">
+        <Value>member</Value>
+    </Attribute>
+</DataConnector>

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


More information about the commits mailing list