[java-identity-provider COMMIT] in /trunk/idp-attribute-resolver-impl/src: main/java/net/shibboleth/idp/attribute/res...
noreply at shibboleth.net
noreply at shibboleth.net
Thu May 2 00:54:20 EDT 2013
Author: dfisher
Date: Thu May 2 00:54:20 2013
New Revision: 4447
URL: http://svn.shibboleth.net/view/java-identity-provider?rev=4447&view=rev
Log:
Add FormatExecutableStatementBuilder to construct SQL using String#format.
Remove SqlStringExecutableStatement; inner classes for ExecutableStatements seem to be a cleaner implementation.
Add readOnlyConnection property to RdbmsDataConnector.
Added:
trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/dc/rdbms/FormatExecutableStatementBuilder.java
Modified:
trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/dc/rdbms/RdbmsDataConnector.java
trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/dc/rdbms/SqlStringExecutableStatement.java
trunk/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/dc/rdbms/RdbmsDataConnectorTest.java
Modified: trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/dc/rdbms/RdbmsDataConnector.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/dc/rdbms/RdbmsDataConnector.java?rev=4447&r1=4446&r2=4447&view=diff
==============================================================================
--- trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/dc/rdbms/RdbmsDataConnector.java (original)
+++ trunk/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/impl/dc/rdbms/RdbmsDataConnector.java Thu May 2 00:54:20 2013
@@ -49,6 +49,11 @@
/** JDBC data source for retrieving {@link Connection}s. */
private DataSource dataSource;
+ /** Whether the JDBC connection is read-only. */
+ private boolean readOnlyConnection = true;
+
+ // TODO: support queryUsesStoredProcedure?
+
/**
* Constructor.
*/
@@ -76,6 +81,24 @@
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
dataSource = Constraint.isNotNull(source, "JDBC data source can not be null");
+ }
+
+ /**
+ * Gets whether this data connector uses read-only connections.
+ *
+ * @return whether this data connector uses read-only connections
+ */
+ public boolean isConnectionReadOnly() {
+ return readOnlyConnection;
+ }
+
+ /**
+ * Sets whether this data connector uses read-only connections.
+ *
+ * @param isReadOnly whether this data connector uses read-only connections
+ */
+ public void setConnectionReadOnly(boolean isReadOnly) {
+ readOnlyConnection = isReadOnly;
}
/** {@inheritDoc} */
@@ -127,6 +150,9 @@
ResultSet queryResult = null;
try {
connection = dataSource.getConnection();
+ if (readOnlyConnection) {
+ connection.setReadOnly(true);
+ }
queryResult = statement.execute(connection);
log.trace("Data connector '{}': search returned {}", getId(), queryResult);
Modified: trunk/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/dc/rdbms/RdbmsDataConnectorTest.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/dc/rdbms/RdbmsDataConnectorTest.java?rev=4447&r1=4446&r2=4447&view=diff
==============================================================================
--- trunk/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/dc/rdbms/RdbmsDataConnectorTest.java (original)
+++ trunk/idp-attribute-resolver-impl/src/test/java/net/shibboleth/idp/attribute/resolver/impl/dc/rdbms/RdbmsDataConnectorTest.java Thu May 2 00:54:20 2013
@@ -17,6 +17,8 @@
package net.shibboleth.idp.attribute.resolver.impl.dc.rdbms;
+import java.sql.Connection;
+import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
@@ -66,8 +68,20 @@
throws ResolutionException {
final AttributeRecipientContext subContext =
resolutionContext.getSubcontext(AttributeRecipientContext.class);
- return new SqlStringExecutableStatement(String.format(
- "SELECT userid, name, homephone, mail FROM people WHERE userid='%s'", subContext.getPrincipal()));
+ return new ExecutableStatement() {
+
+ private final String query = String
+ .format("SELECT userid, name, homephone, mail FROM people WHERE userid='%s'",
+ subContext.getPrincipal());
+
+ @Nonnull public String getResultCacheKey() {
+ return query;
+ }
+
+ @Nonnull public ResultSet execute(@Nonnull Connection connection) throws SQLException {
+ return connection.createStatement().executeQuery(query);
+ }
+ };
}
}
@@ -168,17 +182,20 @@
[... 26 lines stripped ...]
More information about the commits
mailing list