[java-identity-provider COMMIT] /trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resol...
noreply at shibboleth.net
noreply at shibboleth.net
Tue Oct 21 11:46:58 EDT 2014
Author: scantor
Date: Tue Oct 21 11:46:58 2014
New Revision: 6757
URL: http://svn.shibboleth.net/view/java-identity-provider?rev=6757&view=rev
Log:
IDP-494 - parse dc:Column elements into a StringResultMappingStrategy
Modified:
trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParser.java
Modified: trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParser.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParser.java?rev=6757&r1=6756&r2=6757&view=diff
==============================================================================
--- trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParser.java (original)
+++ trunk/idp-attribute-resolver-spring/src/main/java/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/RDBMSDataConnectorParser.java Tue Oct 21 11:46:58 2014
@@ -17,11 +17,14 @@
package net.shibboleth.idp.attribute.resolver.spring.dc.rdbms;
+import java.util.List;
+
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import javax.xml.namespace.QName;
import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.RDBMSDataConnector;
+import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.StringResultMappingStrategy;
import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.TemplatedExecutableStatementBuilder;
import net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser;
import net.shibboleth.idp.attribute.resolver.spring.dc.CacheConfigParser;
@@ -38,6 +41,7 @@
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
+import org.springframework.beans.factory.support.ManagedMap;
import org.springframework.beans.factory.xml.ParserContext;
import org.w3c.dom.Element;
@@ -110,6 +114,8 @@
builder.addPropertyValue("executableSearchBuilder", v2Parser.createTemplateBuilder());
+ builder.addPropertyValue("mappingStrategy", v2Parser.createMappingStrategy());
+
builder.addPropertyValue("resultsCache", v2Parser.createCache());
final String noResultIsError = AttributeSupport.getAttributeValue(config, new QName("noResultIsError"));
@@ -187,6 +193,35 @@
templateBuilder.setDestroyMethodName("destroy");
return templateBuilder.getBeanDefinition();
}
+
+ /**
+ * Create the result mapping strategy. See {@link MappingStrategy}.
+ *
+ * @return mapping strategy
+ */
+ @Nullable public BeanDefinition createMappingStrategy() {
+
+ final List<Element> columns = ElementSupport.getChildElementsByTagNameNS(configElement,
+ DataConnectorNamespaceHandler.NAMESPACE, "Column");
+ if (columns.isEmpty()) {
+ return null;
+ }
+
+ final ManagedMap renamingMap = new ManagedMap();
+ for (final Element column : columns) {
+ final String columnName = AttributeSupport.getAttributeValue(column, null, "columnName");
+ final String attributeId = AttributeSupport.getAttributeValue(column, null, "attributeId");
+ if (columnName != null && attributeId != null) {
+ renamingMap.put(columnName, attributeId);
+ }
+ }
+
+ final BeanDefinitionBuilder mapper =
+ BeanDefinitionBuilder.genericBeanDefinition(StringResultMappingStrategy.class);
+ mapper.addPropertyValue("resultRenamingMap", renamingMap);
+
+ return mapper.getBeanDefinition();
+ }
/**
* Create the results cache. See {@link CacheConfigParser}.
More information about the commits
mailing list