[java-identity-provider] branch master updated: Add executableSearchBuilderRef to flattened RDBMS connector.

Scott Cantor cantor.2 at osu.edu
Fri May 19 14:00:45 EDT 2017


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

scantor pushed a commit to branch master
in repository java-identity-provider.

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

The following commit(s) were added to refs/heads/master by this push:
       new  4332f1d   Add executableSearchBuilderRef to flattened RDBMS connector.
4332f1d is described below

commit 4332f1db227282db4bb8a8dfe04dd7f97ad1fff7
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Fri May 19 14:00:43 2017 -0400

    Add executableSearchBuilderRef to flattened RDBMS connector.
---
 .../dc/rdbms/impl/RDBMSDataConnectorParser.java     | 21 +++++++++++++++++++--
 .../dc/rdbms/RDBMSDataConnectorParserTest.java      | 12 ++++++++++++
 .../rdbms-attribute-resolver-spring-context.xml     |  2 +-
 .../rdbms-attribute-resolver-v2-flat-hybrid.xml     | 14 ++++++++++++++
 .../schema/shibboleth-attribute-resolver.xsd        | 18 +++++++++++++++---
 5 files changed, 61 insertions(+), 6 deletions(-)

diff --git a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParser.java b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParser.java
index 6f5950f..af1dd4c 100644
--- a/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParser.java
+++ b/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/impl/RDBMSDataConnectorParser.java
@@ -84,7 +84,15 @@ public class RDBMSDataConnectorParser extends AbstractDataConnectorParser {
             builder.addPropertyValue("DataSource", v2Parser.createManagedDataSource());
         }
 
-        builder.addPropertyValue("executableSearchBuilder", v2Parser.createTemplateBuilder());
+        final String searchBuilderID = v2Parser.getBeanSearchBuilderID();
+        if (searchBuilderID != null) {
+            builder.addPropertyReference("executableSearchBuilder", searchBuilderID);
+        } else {
+            final BeanDefinition def = v2Parser.createTemplateBuilder();
+            if (def != null) {
+                builder.addPropertyValue("executableSearchBuilder", def);
+            }
+        }
 
         final String connectionReadOnly = v2Parser.getConnectionReadOnly();
         if (connectionReadOnly != null) {
@@ -181,6 +189,15 @@ public class RDBMSDataConnectorParser extends AbstractDataConnectorParser {
          }
 
         /**
+         * Get the bean ID of an externally defined search builder.
+         * 
+         * @return search builder bean ID
+         */
+        @Nullable public String getBeanSearchBuilderID() {
+            return AttributeSupport.getAttributeValue(configElement, null, "executableSearchBuilderRef");
+        }
+        
+        /**
          * Create the definition of the template driven search builder.
          * 
          * @return the bean definition for the template search builder.
@@ -239,7 +256,7 @@ public class RDBMSDataConnectorParser extends AbstractDataConnectorParser {
         @Nullable public String getBeanMappingStrategyID() {
             return AttributeSupport.getAttributeValue(configElement, null, "mappingStrategyRef");
         }
-        
+
         /**
          * Create the result mapping strategy. See {@link net.shibboleth.idp.attribute.resolver.dc.MappingStrategy}.
          * 
diff --git a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParserTest.java b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParserTest.java
index a4e9848..edb4f9b 100644
--- a/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParserTest.java
+++ b/idp-attribute-resolver-spring/src/test/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParserTest.java
@@ -125,6 +125,18 @@ public class RDBMSDataConnectorParserTest {
         Assert.assertEquals(mappingStrategy.getResultRenamingMap().get("homephone"), "phonenumber");
     }
 
+    @Test public void flatHybridConfig() throws Exception {
+        final RDBMSDataConnector dataConnector =
+                getRdbmsDataConnector(
+                        "net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-attribute-resolver-v2-flat-hybrid.xml",
+                        "net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-attribute-resolver-spring-context.xml");
+        Assert.assertNotNull(dataConnector);
+        doTest(dataConnector);
+        final StringResultMappingStrategy mappingStrategy = (StringResultMappingStrategy) dataConnector.getMappingStrategy();
+        Assert.assertEquals(mappingStrategy.getResultRenamingMap().size(), 1);
+        Assert.assertEquals(mappingStrategy.getResultRenamingMap().get("homephone"), "phonenumber");
+    }
+
     @Test public void v2PropsConfig() throws Exception {
         final Resource props = new ClassPathResource("net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-v2.properties");
         final RDBMSDataConnector dataConnector =
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-attribute-resolver-spring-context.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-attribute-resolver-spring-context.xml
index 516cad6..5fe4d76 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-attribute-resolver-spring-context.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-attribute-resolver-spring-context.xml
@@ -15,7 +15,7 @@
         <constructor-arg value="expireAfterAccess=10s,maximumSize=25" />
     </bean>
     <bean id="cache" class="com.google.common.cache.Cache" factory-bean="cacheBuilder" factory-method="build" />
-    <bean class="net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.FormatExecutableStatementBuilder"
+    <bean id="query" class="net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.FormatExecutableStatementBuilder"
         p:query="SELECT * FROM people WHERE userid='%s'" />
 
     <bean id="mappings" class="net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.StringResultMappingStrategy"
diff --git a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-attribute-resolver-v2-flat-hybrid.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-attribute-resolver-v2-flat-hybrid.xml
new file mode 100644
index 0000000..074ef14
--- /dev/null
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-attribute-resolver-v2-flat-hybrid.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<AttributeResolver 
+            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">
+
+    <DataConnector id="myDatabase" xsi:type="RelationalDatabase"
+        noRetryDelay="PT5M"
+        mappingStrategyRef="mappings" executableSearchBuilderRef="query" validatorRef="validator" readOnlyConnection="false">
+        <BeanManagedConnection>dataSource</BeanManagedConnection>
+        
+        <ResultCacheBean>cache</ResultCacheBean>
+    </DataConnector>
+    
+</AttributeResolver>
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 067c622..b79bc95 100644
--- a/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
+++ b/idp-schema/src/main/resources/schema/shibboleth-attribute-resolver.xsd
@@ -198,7 +198,10 @@
                 </attribute>
                 <attribute name="factoryPostProcessorsRef" type="string">
                     <annotation>
-                        <documentation>Bean Name of locations of bean factory post processors resource configurations.  Defaults to shibboleth.PropertySourcesPlaceholderConfigurer.</documentation>
+                        <documentation>
+                            Bean Name of locations of bean factory post processors resource configurations.
+                            Defaults to shibboleth.PropertySourcesPlaceholderConfigurer.
+                        </documentation>
                     </annotation>
                 </attribute>
                 <attribute name="postProcessorsRef" type="string">
@@ -231,14 +234,16 @@
     <element name="PrincipalConnector" type="resolver:BasePrincipalConnectorType">
         <annotation>
             <documentation>
-    Principal connectors convert a subject's NameID into an internal principal
-    name for use within attribute definitions and data connectors.
+                DEPRECATED:
+                Principal connectors convert a subject's NameID into an internal principal
+                name for use within attribute definitions and data connectors.
             </documentation>
         </annotation>
     </element>
     <complexType name="BasePrincipalConnectorType">
         <annotation>
             <documentation>
+                DEPRECATED:
                 Principal connectors convert a subject's NameID into an internal principal
                 name for use within attribute definitions and data connectors.
             </documentation>
@@ -1215,6 +1220,13 @@
                         </documentation>
                     </annotation>
                 </attribute>
+                <attribute name="executableSearchBuilderRef" type="string">
+                    <annotation>
+                        <documentation>
+                            Reference to a Spring bean providing the ExecutableSearchBuilder implementation to use.
+                        </documentation>
+                    </annotation>
+                </attribute>
                 <attribute name="mappingStrategyRef" type="string">
                     <annotation>
                         <documentation>

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


More information about the commits mailing list