[java-identity-provider COMMIT] in /trunk: idp-authn-api/src/main/java/net/shibboleth/idp/authn/PrincipalEvalPredicat...
noreply at shibboleth.net
noreply at shibboleth.net
Thu Aug 15 15:28:00 EDT 2013
Author: scantor
Date: Thu Aug 15 15:27:59 2013
New Revision: 4689
URL: http://svn.shibboleth.net/view/java-identity-provider?rev=4689&view=rev
Log:
Exact match predicate for principal comparison
Added:
trunk/idp-authn-impl/src/main/java/net/shibboleth/idp/authn/impl/ExactPrincipalEvalPredicateFactory.java (with props)
trunk/idp-authn-impl/src/test/java/net/shibboleth/idp/authn/impl/ExactPrincipalEvalPredicateFactoryTest.java (with props)
Modified:
trunk/idp-authn-api/src/main/java/net/shibboleth/idp/authn/PrincipalEvalPredicateFactoryRegistry.java
Modified: trunk/idp-authn-api/src/main/java/net/shibboleth/idp/authn/PrincipalEvalPredicateFactoryRegistry.java
URL: http://svn.shibboleth.net/view/java-identity-provider/trunk/idp-authn-api/src/main/java/net/shibboleth/idp/authn/PrincipalEvalPredicateFactoryRegistry.java?rev=4689&r1=4688&r2=4689&view=diff
==============================================================================
--- trunk/idp-authn-api/src/main/java/net/shibboleth/idp/authn/PrincipalEvalPredicateFactoryRegistry.java (original)
+++ trunk/idp-authn-api/src/main/java/net/shibboleth/idp/authn/PrincipalEvalPredicateFactoryRegistry.java Thu Aug 15 15:27:59 2013
@@ -17,6 +17,7 @@
package net.shibboleth.idp.authn;
+import java.security.Principal;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -28,13 +29,14 @@
import net.shibboleth.utilities.java.support.annotation.constraint.NonnullElements;
import net.shibboleth.utilities.java.support.annotation.constraint.NotEmpty;
+import net.shibboleth.utilities.java.support.collection.Pair;
import net.shibboleth.utilities.java.support.logic.Constraint;
import net.shibboleth.utilities.java.support.primitive.StringSupport;
/**
- * A registry of mappings between a type of matching operator and a corresponding
- * {@link PrincipalEvalPredicateFactory} that returns predicates enforcing
- * a particular set of matching rules for that operator.
+ * A registry of mappings between a custom {@link Principal} subtype with a matching operator
+ * and a corresponding {@link PrincipalEvalPredicateFactory} that returns predicates enforcing
+ * a particular set of matching rules for that operator and subtype.
*/
public final class PrincipalEvalPredicateFactoryRegistry {
@@ -42,7 +44,7 @@
private final Logger log = LoggerFactory.getLogger(PrincipalEvalPredicateFactoryRegistry.class);
/** Storage for the registry mappings. */
- private Map<String, PrincipalEvalPredicateFactory> registry;
+ private Map<Pair<Class<? extends Principal>, String>, PrincipalEvalPredicateFactory> registry;
/** Constructor. */
public PrincipalEvalPredicateFactoryRegistry() {
@@ -54,27 +56,32 @@
*
* @param fromMap map to populate registry with
*/
- public PrincipalEvalPredicateFactoryRegistry(
- @Nonnull @NonnullElements Map<String, PrincipalEvalPredicateFactory> fromMap) {
+ public PrincipalEvalPredicateFactoryRegistry(@Nonnull @NonnullElements
+ Map<Pair<Class<? extends Principal>, String>, PrincipalEvalPredicateFactory> fromMap) {
registry = new ConcurrentHashMap(Constraint.isNotNull(fromMap, "Source map cannot be null"));
}
/**
- * Get a registered predicate factory for a given operator string, if any.
+ * Get a registered predicate factory for a given principal type and operator string, if any.
*
+ * @param principalType a principal subtype
* @param operator an operator string
* @return a corresponding predicate factory, or null
*/
- @Nullable public PrincipalEvalPredicateFactory lookup(@Nonnull @NotEmpty final String operator) {
+ @Nullable public PrincipalEvalPredicateFactory lookup(@Nonnull final Class<? extends Principal> principalType,
+ @Nonnull @NotEmpty final String operator) {
+ Constraint.isNotNull(principalType, "Principal subtype cannot be null");
String trimmed = Constraint.isNotNull(StringSupport.trimOrNull(operator), "Operator cannot be null or empty");
- PrincipalEvalPredicateFactory factory = registry.get(trimmed);
+ Pair key = new Pair(principalType, trimmed);
+ PrincipalEvalPredicateFactory factory = registry.get(key);
if (factory != null) {
- log.debug("Registry located predicate factory of type {} for operator {}", factory.getClass().getName(),
- trimmed);
+ log.debug("Registry located predicate factory of type {} for principal type {} and operator {}",
+ factory.getClass().getName(), principalType, trimmed);
return factory;
} else {
- log.debug("Registry failed to locate predicate factory for operator {}", trimmed);
+ log.debug("Registry failed to locate predicate factory for principal type {} and operator {}",
+ principalType, trimmed);
return null;
}
}
@@ -82,27 +89,33 @@
/**
* Register a predicate factory for a given operator string.
*
[... 38 lines stripped ...]
More information about the commits
mailing list