[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