[java-identity-provider] 02/05: IDP-1179 Move the RDBMS StatementBuilders to api
Rod Widdowson
rdw at steadingsoftware.com
Fri Nov 22 03:28:06 EST 2019
This is an automated email from the git hooks/post-receive script.
rdw 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=e3c50cf51e9db328b7fc729297982dbf600e29dc
commit e3c50cf51e9db328b7fc729297982dbf600e29dc
Author: Rod Widdowson <rdw at steadingsoftware.com>
AuthorDate: Mon Nov 18 15:56:55 2019 +0000
IDP-1179 Move the RDBMS StatementBuilders to api
https://issues.shibboleth.net/jira/browse/IDP-1179
Create a V2 Version (still in impl) which injects the 'requestContext'
---
idp-attribute-resolver-api/pom.xml | 4 ++
.../rdbms}/AbstractExecutableStatementBuilder.java | 3 +-
.../rdbms}/FormatExecutableStatementBuilder.java | 2 +-
.../TemplatedExecutableStatementBuilder.java | 21 ++++++----
...mpatibleTemplateExecutableStatementBuilder.java | 49 ++++++++++++++++++++++
.../dc/rdbms/impl/RDBMSDataConnectorTest.java | 2 +
.../dc/rdbms/impl/RDBMSDataConnectorParser.java | 4 +-
.../rdbms-attribute-resolver-spring-context.xml | 2 +-
...bms-attribute-resolver-spring-props-context.xml | 2 +-
9 files changed, 73 insertions(+), 16 deletions(-)
diff --git a/idp-attribute-resolver-api/pom.xml b/idp-attribute-resolver-api/pom.xml
index c32966a..354066a 100644
--- a/idp-attribute-resolver-api/pom.xml
+++ b/idp-attribute-resolver-api/pom.xml
@@ -47,6 +47,10 @@
<artifactId>bcprov-jdk15on</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.apache.velocity</groupId>
+ <artifactId>velocity-engine-core</artifactId>
+ </dependency>
<!-- Provided Dependencies -->
<!-- Runtime Dependencies -->
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/AbstractExecutableStatementBuilder.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/AbstractExecutableStatementBuilder.java
similarity index 96%
rename from idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/AbstractExecutableStatementBuilder.java
rename to idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/AbstractExecutableStatementBuilder.java
index 63871fa..73a811a 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/AbstractExecutableStatementBuilder.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/AbstractExecutableStatementBuilder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package net.shibboleth.idp.attribute.resolver.dc.rdbms.impl;
+package net.shibboleth.idp.attribute.resolver.dc.rdbms;
import java.sql.Connection;
import java.sql.ResultSet;
@@ -32,7 +32,6 @@ import net.shibboleth.idp.attribute.IdPAttributeValue;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder;
-import net.shibboleth.idp.attribute.resolver.dc.rdbms.ExecutableStatement;
import net.shibboleth.utilities.java.support.component.AbstractInitializableComponent;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/FormatExecutableStatementBuilder.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/FormatExecutableStatementBuilder.java
similarity index 98%
rename from idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/FormatExecutableStatementBuilder.java
rename to idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/FormatExecutableStatementBuilder.java
index 77f1c94..572e228 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/FormatExecutableStatementBuilder.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/FormatExecutableStatementBuilder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package net.shibboleth.idp.attribute.resolver.dc.rdbms.impl;
+package net.shibboleth.idp.attribute.resolver.dc.rdbms;
import java.util.ArrayList;
import java.util.List;
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/TemplatedExecutableStatementBuilder.java b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/TemplatedExecutableStatementBuilder.java
similarity index 93%
rename from idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/TemplatedExecutableStatementBuilder.java
rename to idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/TemplatedExecutableStatementBuilder.java
index fd81e2e..4a11864 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/TemplatedExecutableStatementBuilder.java
+++ b/idp-attribute-resolver-api/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/TemplatedExecutableStatementBuilder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package net.shibboleth.idp.attribute.resolver.dc.rdbms.impl;
+package net.shibboleth.idp.attribute.resolver.dc.rdbms;
import java.util.ArrayList;
import java.util.Collection;
@@ -43,8 +43,6 @@ import org.apache.velocity.exception.VelocityException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import edu.internet2.middleware.shibboleth.common.attribute.provider.V2SAMLProfileRequestContext;
-
/**
* An {@link net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder} that generates the SQL statement to
* be executed by evaluating a {@link Template} against the currently resolved attributes within a
@@ -173,17 +171,14 @@ public class TemplatedExecutableStatementBuilder extends AbstractExecutableState
/**
* Apply the context to the template. {@inheritDoc}
*/
- @Override protected String getSQLQuery(@Nonnull final AttributeResolutionContext resolutionContext,
+ @Override
+ public final String getSQLQuery(@Nonnull final AttributeResolutionContext resolutionContext,
@Nonnull final Map<String, List<IdPAttributeValue>> dependencyAttributes) throws ResolutionException {
final VelocityContext context = new VelocityContext();
log.trace("Creating search filter using attribute resolution context {}", resolutionContext);
context.put("resolutionContext", resolutionContext);
- if (isV2Compatibility()) {
- final V2SAMLProfileRequestContext requestContext = new V2SAMLProfileRequestContext(resolutionContext, null);
- log.trace("Adding v2 request context {}", requestContext);
- context.put("requestContext", requestContext);
- }
+ addExtraVelocityContext(context, resolutionContext);
// inject dependencies
if (dependencyAttributes != null && !dependencyAttributes.isEmpty()) {
@@ -211,6 +206,14 @@ public class TemplatedExecutableStatementBuilder extends AbstractExecutableState
}
}
+ /** Method to allow private additions to the velocity context.
+ * @param velocityContext where to add the information
+ * @param resolutionContext current resolution context
+ */
+ protected void addExtraVelocityContext(@Nonnull final VelocityContext velocityContext,
+ @Nonnull final AttributeResolutionContext resolutionContext) {
+ }
+
/** {@inheritDoc} */
@Override protected void doInitialize() throws ComponentInitializationException {
super.doInitialize();
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/V2CompatibleTemplateExecutableStatementBuilder.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/V2CompatibleTemplateExecutableStatementBuilder.java
new file mode 100644
index 0000000..210aec3
--- /dev/null
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/V2CompatibleTemplateExecutableStatementBuilder.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements. See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file except in
+ * compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.attribute.resolver.dc.rdbms.impl;
+
+import javax.annotation.Nonnull;
+
+import org.apache.velocity.VelocityContext;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import edu.internet2.middleware.shibboleth.common.attribute.provider.V2SAMLProfileRequestContext;
+import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
+import net.shibboleth.idp.attribute.resolver.dc.rdbms.TemplatedExecutableStatementBuilder;
+
+/**
+ * A {@link TemplatedExecutableStatementBuilder} which also injects an
+ * {@link V2SAMLProfileRequestContext} into the spring context.
+ */
+public class V2CompatibleTemplateExecutableStatementBuilder extends TemplatedExecutableStatementBuilder {
+
+ /** Class logger. */
+ private final Logger log = LoggerFactory.getLogger(V2CompatibleTemplateExecutableStatementBuilder.class);
+
+ /** {@inheritDoc} */
+ protected void addExtraVelocityContext(@Nonnull final VelocityContext velocityContext,
+ @Nonnull final AttributeResolutionContext resolutionContext) {
+ if (isV2Compatibility()) {
+ final V2SAMLProfileRequestContext requestContext = new V2SAMLProfileRequestContext(resolutionContext, null);
+ log.trace("Adding v2 request context {}", requestContext);
+ velocityContext.put("requestContext", requestContext);
+ }
+ super.addExtraVelocityContext(velocityContext, resolutionContext);
+ }
+}
diff --git a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/RDBMSDataConnectorTest.java b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/RDBMSDataConnectorTest.java
index 19b92e1..1646ae9 100644
--- a/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/RDBMSDataConnectorTest.java
+++ b/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/RDBMSDataConnectorTest.java
@@ -46,7 +46,9 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.dc.ExecutableSearchBuilder;
import net.shibboleth.idp.attribute.resolver.dc.impl.TestCache;
import net.shibboleth.idp.attribute.resolver.dc.rdbms.ExecutableStatement;
+import net.shibboleth.idp.attribute.resolver.dc.rdbms.FormatExecutableStatementBuilder;
import net.shibboleth.idp.attribute.resolver.dc.rdbms.ResultMappingStrategy;
+import net.shibboleth.idp.attribute.resolver.dc.rdbms.TemplatedExecutableStatementBuilder;
import net.shibboleth.idp.saml.impl.TestSources;
import net.shibboleth.idp.testing.DatabaseTestingSupport;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
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 51f9da4..0a8b228 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
@@ -35,7 +35,7 @@ import net.shibboleth.ext.spring.util.SpringSupport;
import net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.DataSourceValidator;
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.dc.rdbms.impl.V2CompatibleTemplateExecutableStatementBuilder;
import net.shibboleth.idp.attribute.resolver.spring.dc.AbstractDataConnectorParser;
import net.shibboleth.idp.attribute.resolver.spring.dc.impl.CacheConfigParser;
import net.shibboleth.idp.attribute.resolver.spring.dc.impl.ManagedConnectionParser;
@@ -193,7 +193,7 @@ public class RDBMSDataConnectorParser extends AbstractDataConnectorParser {
*/
@Nonnull public BeanDefinition createTemplateBuilder() {
final BeanDefinitionBuilder templateBuilder =
- BeanDefinitionBuilder.genericBeanDefinition(TemplatedExecutableStatementBuilder.class);
+ BeanDefinitionBuilder.genericBeanDefinition(V2CompatibleTemplateExecutableStatementBuilder.class);
templateBuilder.setInitMethodName("initialize");
templateBuilder.setDestroyMethodName("destroy");
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 fa57646..28c1087 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
@@ -17,7 +17,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 id="query" class="net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.FormatExecutableStatementBuilder"
+ <bean id="query" class="net.shibboleth.idp.attribute.resolver.dc.rdbms.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-spring-props-context.xml b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-attribute-resolver-spring-props-context.xml
index a654820..8c7e1b5 100644
--- a/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-attribute-resolver-spring-props-context.xml
+++ b/idp-attribute-resolver-spring/src/test/resources/net/shibboleth/idp/attribute/resolver/spring/dc/rdbms/rdbms-attribute-resolver-spring-props-context.xml
@@ -15,7 +15,7 @@
<constructor-arg value="%{cache.cacheBuilderSpec}" />
</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 class="net.shibboleth.idp.attribute.resolver.dc.rdbms.FormatExecutableStatementBuilder"
p:query="SELECT * FROM people WHERE userid='%s'" />
<bean id="mappings" class="net.shibboleth.idp.attribute.resolver.dc.rdbms.impl.StringResultMappingStrategy"
p:noResultAnError="true" p:multipleResultsAnError="true">
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list