[java-identity-provider] branch master updated: IDP-1170 - REST DataConnector
Scott Cantor
cantor.2 at osu.edu
Sat May 20 15:50:24 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=71baa07d3daa8ae43c15398915c82d9c1687d9f0
The following commit(s) were added to refs/heads/master by this push:
new 71baa07 IDP-1170 - REST DataConnector
71baa07 is described below
commit 71baa07d3daa8ae43c15398915c82d9c1687d9f0
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Sat May 20 15:50:21 2017 -0400
IDP-1170 - REST DataConnector
https://issues.shibboleth.net/jira/browse/IDP-1170
Adjust search connector base class and types to tighten up
the generic contract.
---
.../dc/impl/AbstractSearchDataConnector.java | 39 ++++++++++++----------
.../resolver/dc/ldap/impl/LDAPDataConnector.java | 5 ++-
.../resolver/dc/rdbms/impl/RDBMSDataConnector.java | 5 ++-
3 files changed, 25 insertions(+), 24 deletions(-)
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/AbstractSearchDataConnector.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/AbstractSearchDataConnector.java
index d2fd26b..cd3d081 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/AbstractSearchDataConnector.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/impl/AbstractSearchDataConnector.java
@@ -33,6 +33,7 @@ import net.shibboleth.idp.attribute.resolver.context.AttributeResolutionContext;
import net.shibboleth.idp.attribute.resolver.context.AttributeResolverWorkContext;
import net.shibboleth.idp.attribute.resolver.dc.MappingStrategy;
import net.shibboleth.idp.attribute.resolver.dc.Validator;
+import net.shibboleth.utilities.java.support.annotation.constraint.NonnullAfterInit;
import net.shibboleth.utilities.java.support.component.ComponentInitializationException;
import net.shibboleth.utilities.java.support.component.ComponentSupport;
import net.shibboleth.utilities.java.support.logic.Constraint;
@@ -46,31 +47,33 @@ import com.google.common.cache.Cache;
* A {@link net.shibboleth.idp.attribute.resolver.DataConnector} containing functionality common to data connectors that
* retrieve attribute data by searching a data source.
*
- * @param <T> type of executable search
+ * @param <T1> type of executable search
+ * @param <T2> type of mapping strategy
*/
-public abstract class AbstractSearchDataConnector<T extends ExecutableSearch> extends AbstractDataConnector {
+public abstract class AbstractSearchDataConnector<T1 extends ExecutableSearch,T2 extends MappingStrategy>
+ extends AbstractDataConnector {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(AbstractSearchDataConnector.class);
/** Builder used to create executable searches. */
- private ExecutableSearchBuilder<T> searchBuilder;
+ @NonnullAfterInit private ExecutableSearchBuilder<T1> searchBuilder;
/** Validator for validating this data connector. */
- private Validator connectorValidator;
+ @NonnullAfterInit private Validator connectorValidator;
/** Strategy for mapping search results to a collection of {@link IdPAttribute}s. */
- private MappingStrategy mappingStrategy;
+ @NonnullAfterInit private T2 mappingStrategy;
/** Query result cache. */
- private Cache<String, Map<String, IdPAttribute>> resultsCache;
+ @Nullable private Cache<String,Map<String,IdPAttribute>> resultsCache;
/**
* Gets the builder used to create executable searches.
*
* @return builder used to create the executable searches
*/
- public ExecutableSearchBuilder<T> getExecutableSearchBuilder() {
+ @NonnullAfterInit public ExecutableSearchBuilder<T1> getExecutableSearchBuilder() {
return searchBuilder;
}
@@ -79,11 +82,11 @@ public abstract class AbstractSearchDataConnector<T extends ExecutableSearch> ex
*
* @param builder builder used to create the executable searches
*/
- public void setExecutableSearchBuilder(@Nonnull final ExecutableSearchBuilder<T> builder) {
+ public void setExecutableSearchBuilder(@Nonnull final ExecutableSearchBuilder<T1> builder) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
- searchBuilder = Constraint.isNotNull(builder, "Executable search builder can not be null");
+ searchBuilder = Constraint.isNotNull(builder, "Executable search builder cannot be null");
}
/**
@@ -91,7 +94,7 @@ public abstract class AbstractSearchDataConnector<T extends ExecutableSearch> ex
*
* @return validator used to validate this connector
*/
- public Validator getValidator() {
+ @NonnullAfterInit public Validator getValidator() {
return connectorValidator;
}
@@ -104,7 +107,7 @@ public abstract class AbstractSearchDataConnector<T extends ExecutableSearch> ex
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
- connectorValidator = Constraint.isNotNull(validator, "Validator can not be null");
+ connectorValidator = Constraint.isNotNull(validator, "Validator cannot be null");
}
/**
@@ -112,7 +115,7 @@ public abstract class AbstractSearchDataConnector<T extends ExecutableSearch> ex
*
* @return strategy for mapping from search results to a collection of {@link IdPAttribute}s
*/
- public MappingStrategy getMappingStrategy() {
+ @NonnullAfterInit public T2 getMappingStrategy() {
return mappingStrategy;
}
@@ -121,11 +124,11 @@ public abstract class AbstractSearchDataConnector<T extends ExecutableSearch> ex
*
* @param strategy strategy for mapping from search results to a collection of {@link IdPAttribute}s
*/
- public void setMappingStrategy(@Nonnull final MappingStrategy strategy) {
+ public void setMappingStrategy(@Nonnull final T2 strategy) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
- mappingStrategy = Constraint.isNotNull(strategy, "Mapping strategy can not be null");
+ mappingStrategy = Constraint.isNotNull(strategy, "Mapping strategy cannot be null");
}
/**
@@ -133,7 +136,7 @@ public abstract class AbstractSearchDataConnector<T extends ExecutableSearch> ex
*
* @return cache used to cache search results
*/
- @Nonnull public Cache<String, Map<String, IdPAttribute>> getResultsCache() {
+ @Nullable public Cache<String,Map<String,IdPAttribute>> getResultsCache() {
return resultsCache;
}
@@ -142,7 +145,7 @@ public abstract class AbstractSearchDataConnector<T extends ExecutableSearch> ex
*
* @param cache cache used to cache search results
*/
- public void setResultsCache(@Nullable final Cache<String, Map<String, IdPAttribute>> cache) {
+ public void setResultsCache(@Nullable final Cache<String,Map<String,IdPAttribute>> cache) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
ComponentSupport.ifDestroyedThrowDestroyedComponentException(this);
@@ -161,7 +164,7 @@ public abstract class AbstractSearchDataConnector<T extends ExecutableSearch> ex
*
* @throws ResolutionException thrown if there is a problem retrieving data from the data source
*/
- @Nullable protected abstract Map<String, IdPAttribute> retrieveAttributes(@Nonnull final T executable)
+ @Nullable protected abstract Map<String,IdPAttribute> retrieveAttributes(@Nonnull final T1 executable)
throws ResolutionException;
/** {@inheritDoc} */
@@ -172,7 +175,7 @@ public abstract class AbstractSearchDataConnector<T extends ExecutableSearch> ex
final Map<String, List<IdPAttributeValue<?>>> dependsAttributes =
PluginDependencySupport.getAllAttributeValues(workContext, getDependencies());
- final T executable = searchBuilder.build(resolutionContext, dependsAttributes);
+ final T1 executable = searchBuilder.build(resolutionContext, dependsAttributes);
Map<String, IdPAttribute> resolvedAttributes = null;
if (resultsCache != null && resolutionContext.getAllowCachedResults()) {
final String cacheKey = executable.getResultCacheKey();
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnector.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnector.java
index 9ac3a59..e461898 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnector.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/ldap/impl/LDAPDataConnector.java
@@ -24,7 +24,6 @@ import javax.annotation.Nullable;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
-import net.shibboleth.idp.attribute.resolver.dc.MappingStrategy;
import net.shibboleth.idp.attribute.resolver.dc.ValidationException;
import net.shibboleth.idp.attribute.resolver.dc.Validator;
import net.shibboleth.idp.attribute.resolver.dc.impl.AbstractSearchDataConnector;
@@ -43,7 +42,7 @@ import org.slf4j.LoggerFactory;
* A {@link net.shibboleth.idp.attribute.resolver.DataConnector} that queries an LDAP in order to retrieve attribute
* data.
*/
-public class LDAPDataConnector extends AbstractSearchDataConnector<ExecutableSearchFilter> {
+public class LDAPDataConnector extends AbstractSearchDataConnector<ExecutableSearchFilter,SearchResultMappingStrategy> {
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(LDAPDataConnector.class);
@@ -115,7 +114,7 @@ public class LDAPDataConnector extends AbstractSearchDataConnector<ExecutableSea
}
/** {@inheritDoc} */
- @Override public void setMappingStrategy(@Nonnull final MappingStrategy strategy) {
+ @Override public void setMappingStrategy(@Nonnull final SearchResultMappingStrategy strategy) {
super.setMappingStrategy(strategy);
defaultMappingStrategy = false;
}
diff --git a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/RDBMSDataConnector.java b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/RDBMSDataConnector.java
index 30aef38..8213264 100644
--- a/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/RDBMSDataConnector.java
+++ b/idp-attribute-resolver-impl/src/main/java/net/shibboleth/idp/attribute/resolver/dc/rdbms/impl/RDBMSDataConnector.java
@@ -28,7 +28,6 @@ import javax.sql.DataSource;
import net.shibboleth.idp.attribute.IdPAttribute;
import net.shibboleth.idp.attribute.resolver.ResolutionException;
-import net.shibboleth.idp.attribute.resolver.dc.MappingStrategy;
import net.shibboleth.idp.attribute.resolver.dc.ValidationException;
import net.shibboleth.idp.attribute.resolver.dc.Validator;
import net.shibboleth.idp.attribute.resolver.dc.impl.AbstractSearchDataConnector;
@@ -43,7 +42,7 @@ import org.slf4j.LoggerFactory;
* A {@link net.shibboleth.idp.attribute.resolver.DataConnector} that queries a relation database in order to retrieve
* attribute data.
*/
-public class RDBMSDataConnector extends AbstractSearchDataConnector<ExecutableStatement> {
+public class RDBMSDataConnector extends AbstractSearchDataConnector<ExecutableStatement,ResultMappingStrategy> {
/** Class logger. */
private final Logger log = LoggerFactory.getLogger(RDBMSDataConnector.class);
@@ -112,7 +111,7 @@ public class RDBMSDataConnector extends AbstractSearchDataConnector<ExecutableSt
}
/** {@inheritDoc} */
- @Override public void setMappingStrategy(@Nonnull final MappingStrategy strategy) {
+ @Override public void setMappingStrategy(@Nonnull final ResultMappingStrategy strategy) {
super.setMappingStrategy(strategy);
defaultMappingStrategy = false;
}
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list