[java-plugin-shibd] branch main updated: Relocate criteria classes into their own package.
Codeberg
noreply at shibboleth.net
Mon Aug 31 12:50:12 UTC 2026
This is an automated email from the git hooks/post-receive script.
codeberg pushed a commit to branch main
in repository java-plugin-shibd.
View the commit online:
https://codeberg.org/Shibboleth/java-plugin-shibd/commit/0a2897139014518c254b094d0eb090dec5a5dad2
The following commit(s) were added to refs/heads/main by this push:
new 0a28971 Relocate criteria classes into their own package.
0a28971 is described below
commit 0a2897139014518c254b094d0eb090dec5a5dad2
Author: Scott Cantor <scott at restingparrotsoftware.com>
AuthorDate: Mon Aug 31 08:49:58 2026 -0400
Relocate criteria classes into their own package.
---
.../shibboleth/sp/service/AgentResolverTest.java | 2 +-
.../AbstractStorageServiceCredentialResolver.java | 79 +++++++++++++++++++---
.../{ => criteria}/AgentCredentialCriterion.java | 3 +-
.../sp/{ => criteria}/AgentIDCriterion.java | 3 +-
.../sp/{ => criteria}/ApplicationIDCriterion.java | 4 +-
.../net/shibboleth/sp/criteria/package-info.java | 18 +++++
.../authn/impl/InitializeAgentRequestContext.java | 2 +-
.../credential/impl/CredentialResolverBridge.java | 4 +-
.../impl/StaticMapCredentialResolver.java | 4 +-
.../shibboleth/sp/impl/DefaultAgentResolver.java | 2 +-
.../impl/StaticMapCredentialResolverTest.java | 4 +-
.../X509CredentialStorageServiceResolverTest.java | 4 +-
.../shibboleth/sp/testing/MockAgentResolver.java | 2 +-
13 files changed, 107 insertions(+), 24 deletions(-)
diff --git a/sp-conf-impl/src/test/java/net/shibboleth/sp/service/AgentResolverTest.java b/sp-conf-impl/src/test/java/net/shibboleth/sp/service/AgentResolverTest.java
index 2391eba..45aeadb 100644
--- a/sp-conf-impl/src/test/java/net/shibboleth/sp/service/AgentResolverTest.java
+++ b/sp-conf-impl/src/test/java/net/shibboleth/sp/service/AgentResolverTest.java
@@ -37,9 +37,9 @@ import net.shibboleth.shared.service.ServiceableComponent;
import net.shibboleth.shared.spring.config.IdentifiableBeanPostProcessor;
import net.shibboleth.shared.spring.service.ReloadableSpringService;
import net.shibboleth.sp.Agent;
-import net.shibboleth.sp.AgentCredentialCriterion;
import net.shibboleth.sp.AgentResolver;
import net.shibboleth.sp.Application;
+import net.shibboleth.sp.criteria.AgentCredentialCriterion;
import net.shibboleth.sp.impl.BasicApplication;
import org.opensaml.profile.context.ProfileRequestContext;
diff --git a/sp-server-api/src/main/java/net/shibboleth/sp/credential/AbstractStorageServiceCredentialResolver.java b/sp-server-api/src/main/java/net/shibboleth/sp/credential/AbstractStorageServiceCredentialResolver.java
index 56a8ea4..31a5a87 100644
--- a/sp-server-api/src/main/java/net/shibboleth/sp/credential/AbstractStorageServiceCredentialResolver.java
+++ b/sp-server-api/src/main/java/net/shibboleth/sp/credential/AbstractStorageServiceCredentialResolver.java
@@ -16,6 +16,7 @@ package net.shibboleth.sp.credential;
import java.nio.charset.StandardCharsets;
import java.security.NoSuchAlgorithmException;
+import java.util.List;
import java.util.Map;
import java.util.function.Function;
@@ -28,12 +29,15 @@ import org.apache.velocity.exception.VelocityException;
import org.opensaml.core.criterion.EntityIdCriterion;
import org.opensaml.profile.context.ProfileRequestContext;
import org.opensaml.profile.criterion.ProfileRequestContextCriterion;
+import org.opensaml.saml.criterion.ProtocolCriterion;
import org.opensaml.security.credential.Credential;
import org.opensaml.security.credential.UsageType;
import org.opensaml.security.criteria.UsageCriterion;
import org.opensaml.storage.StorageService;
import org.slf4j.Logger;
+import com.google.common.cache.Cache;
+
import net.shibboleth.shared.annotation.ParameterName;
import net.shibboleth.shared.annotation.constraint.NonnullAfterInit;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
@@ -51,9 +55,9 @@ import net.shibboleth.shared.resolver.Criterion;
import net.shibboleth.shared.resolver.ResolverException;
import net.shibboleth.shared.velocity.Template;
import net.shibboleth.sp.Agent;
-import net.shibboleth.sp.AgentIDCriterion;
import net.shibboleth.sp.Application;
-import net.shibboleth.sp.ApplicationIDCriterion;
+import net.shibboleth.sp.criteria.AgentIDCriterion;
+import net.shibboleth.sp.criteria.ApplicationIDCriterion;
/**
* A dymamic resolver that relies on a {@link StorageService} to retrieve blobs
@@ -98,13 +102,16 @@ public abstract class AbstractStorageServiceCredentialResolver<T extends Credent
/** Default prefix for default context value. */
@Nonnull @NotEmpty public static final String DEFAULT_CONTEXT_PREFIX = "net.shibboleth.sp.credential.";
- /** The Velocity context variable name for the Agent ID. */
+ /** The Velocity context variable name for the CriteriaSet. */
@Nonnull @NotEmpty public static final String CONTEXT_KEY_CRITERIA = "criteria";
+
+ /** The Velocity context variable name for the Protocol. */
+ @Nonnull @NotEmpty public static final String CONTEXT_KEY_PROTOCOL = "protocol";
/** The Velocity context variable name for the Agent ID. */
@Nonnull @NotEmpty public static final String CONTEXT_KEY_AGENT_ID = "agentID";
- /** The Velocity context variable name for the Agent ID. */
+ /** The Velocity context variable name for the Application ID. */
@Nonnull @NotEmpty public static final String CONTEXT_KEY_APPLICATION_ID = "applicationID";
/** The Velocity context variable name for the entity ID. */
@@ -112,13 +119,13 @@ public abstract class AbstractStorageServiceCredentialResolver<T extends Credent
/** The Velocity context variable name for the transformed entity ID. */
@Nonnull @NotEmpty public static final String CONTEXT_KEY_TX_ENTITY_ID = "transformedRelyingPartyID";
-
- /** The Velocity context variable name for the {@link ProfileRequestContext}. */
- @Nonnull @NotEmpty public static final String CONTEXT_KEY_PRC = "profileRequestContext";
/** The Velocity context variable name for the {@link UsageType}. */
@Nonnull @NotEmpty public static final String CONTEXT_KEY_USAGE = "usage";
+ /** The Velocity context variable name for the {@link ProfileRequestContext}. */
+ @Nonnull @NotEmpty public static final String CONTEXT_KEY_PRC = "profileRequestContext";
+
/** Class logger. */
@Nonnull private final Logger log = LoggerFactory.getLogger(AbstractStorageServiceCredentialResolver.class);
@@ -133,7 +140,10 @@ public abstract class AbstractStorageServiceCredentialResolver<T extends Credent
/** Function to transform the entityID. */
@NonnullAfterInit private Function<String,String> entityIDTransformStrategy;
-
+
+ /** Credential resolution cache. */
+ @Nullable private Cache<CriteriaSet,List<T>> resultsCache;
+
/** Velocity template source for context. */
@NonnullAfterInit private String contextTemplateString;
@@ -142,6 +152,9 @@ public abstract class AbstractStorageServiceCredentialResolver<T extends Credent
/** Map of usage types to template values. */
@Nonnull private Map<UsageType,String> usageMap;
+
+ /** Map of protocol values to template values. */
+ @Nonnull private Map<String,String> protocolMap;
/**
* Constructor.
@@ -152,6 +165,7 @@ public abstract class AbstractStorageServiceCredentialResolver<T extends Credent
credentialType = Constraint.isNotNull(type, "Credential type cannot be null");
usageMap = Map.of(UsageType.SIGNING, "-signing", UsageType.ENCRYPTION, "-encryption",
UsageType.UNSPECIFIED, "-signing");
+ protocolMap = CollectionSupport.emptyMap();
}
/**
@@ -207,6 +221,31 @@ public abstract class AbstractStorageServiceCredentialResolver<T extends Credent
entityIDTransformStrategy = Constraint.isNotNull(strategy, "EntityID transform strategy cannot be null");
}
+ /**
+ * Gets the cache of resolution results.
+ *
+ * @return cache of results
+ */
+ @Nullable public Cache<CriteriaSet,List<T>> getResultsCache() {
+ return resultsCache;
+ }
+
+ /**
+ * Sets the cache used to cache search results.
+ *
+ * <p>All entries in the cache are invalidated prior to use.</p>
+ *
+ * @param cache cache used to cache search results
+ */
+ public void setResultsCache(@Nullable final Cache<CriteriaSet,List<T>> cache) {
+ checkSetterPreconditions();
+
+ if (cache != null) {
+ cache.invalidateAll();
+ }
+ resultsCache = cache;
+ }
+
/**
* Sets the Velocity template to use to construct the storage context.
*
@@ -221,7 +260,7 @@ public abstract class AbstractStorageServiceCredentialResolver<T extends Credent
}
/**
- * Sets a map from {@link UsageType} to string token, allowing customizable injection of a string
+ * Sets a map from {@link UsageType} to string tokens, allowing customizable injection of a string
* into the Velocity context to abbreviate or otherwise control what to resolve based on a supplied
* {@link UsageCriterion}.
*
@@ -238,6 +277,23 @@ public abstract class AbstractStorageServiceCredentialResolver<T extends Credent
usageMap = CollectionSupport.emptyMap();
}
}
+
+ /**
+ * Sets a map from protocol constants to string tokens, allowing customizable injection of a string
+ * into the Velocity context to abbreviate or otherwise control what to resolve based on a supplied
+ * {@link ProtocolCriterion}.
+ *
+ * <p>Defaults to empty, as most resolvers are xepected to be protocol specific more generally.</p>
+ *
+ * @param map map of usage types to string values
+ */
+ public void setProtocolMap(@Nullable final Map<UsageType,String> map) {
+ if (map != null) {
+ usageMap = CollectionSupport.copyToMap(map);
+ } else {
+ usageMap = CollectionSupport.emptyMap();
+ }
+ }
/** {@inheritDoc} */
@Override
@@ -334,6 +390,11 @@ public abstract class AbstractStorageServiceCredentialResolver<T extends Credent
ctx.put(CONTEXT_KEY_USAGE, usageMap.get(UsageType.UNSPECIFIED));
}
+ final ProtocolCriterion protocolCrit = criteria.get(ProtocolCriterion.class);
+ if (protocolCrit != null) {
+ ctx.put(CONTEXT_KEY_PROTOCOL, protocolMap.get(protocolCrit.getProtocol()));
+ }
+
return ctx;
}
diff --git a/sp-server-api/src/main/java/net/shibboleth/sp/AgentCredentialCriterion.java b/sp-server-api/src/main/java/net/shibboleth/sp/criteria/AgentCredentialCriterion.java
similarity index 95%
rename from sp-server-api/src/main/java/net/shibboleth/sp/AgentCredentialCriterion.java
rename to sp-server-api/src/main/java/net/shibboleth/sp/criteria/AgentCredentialCriterion.java
index 34a72eb..cb35836 100644
--- a/sp-server-api/src/main/java/net/shibboleth/sp/AgentCredentialCriterion.java
+++ b/sp-server-api/src/main/java/net/shibboleth/sp/criteria/AgentCredentialCriterion.java
@@ -12,7 +12,7 @@
* limitations under the License.
*/
-package net.shibboleth.sp;
+package net.shibboleth.sp.criteria;
import javax.annotation.Nonnull;
@@ -20,6 +20,7 @@ import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.Criterion;
+import net.shibboleth.sp.Agent;
/**
* Resolver {@link Criterion} identifying an {@link Agent} by means of a "credential" name.
diff --git a/sp-server-api/src/main/java/net/shibboleth/sp/AgentIDCriterion.java b/sp-server-api/src/main/java/net/shibboleth/sp/criteria/AgentIDCriterion.java
similarity index 97%
rename from sp-server-api/src/main/java/net/shibboleth/sp/AgentIDCriterion.java
rename to sp-server-api/src/main/java/net/shibboleth/sp/criteria/AgentIDCriterion.java
index 7fd36d5..2160b6e 100644
--- a/sp-server-api/src/main/java/net/shibboleth/sp/AgentIDCriterion.java
+++ b/sp-server-api/src/main/java/net/shibboleth/sp/criteria/AgentIDCriterion.java
@@ -12,7 +12,7 @@
* limitations under the License.
*/
-package net.shibboleth.sp;
+package net.shibboleth.sp.criteria;
import javax.annotation.Nonnull;
@@ -20,6 +20,7 @@ import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.Criterion;
+import net.shibboleth.sp.Agent;
/**
* Resolver {@link Criterion} identifying an {@link Agent} by means of its unique ID.
diff --git a/sp-server-api/src/main/java/net/shibboleth/sp/ApplicationIDCriterion.java b/sp-server-api/src/main/java/net/shibboleth/sp/criteria/ApplicationIDCriterion.java
similarity index 96%
rename from sp-server-api/src/main/java/net/shibboleth/sp/ApplicationIDCriterion.java
rename to sp-server-api/src/main/java/net/shibboleth/sp/criteria/ApplicationIDCriterion.java
index 0f3212e..83026ec 100644
--- a/sp-server-api/src/main/java/net/shibboleth/sp/ApplicationIDCriterion.java
+++ b/sp-server-api/src/main/java/net/shibboleth/sp/criteria/ApplicationIDCriterion.java
@@ -12,7 +12,7 @@
* limitations under the License.
*/
-package net.shibboleth.sp;
+package net.shibboleth.sp.criteria;
import javax.annotation.Nonnull;
@@ -20,6 +20,8 @@ import net.shibboleth.shared.annotation.constraint.NotEmpty;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.StringSupport;
import net.shibboleth.shared.resolver.Criterion;
+import net.shibboleth.sp.Agent;
+import net.shibboleth.sp.Application;
/**
* Resolver {@link Criterion} identifying an {@link Application} by means of its {@link Agent}-specific ID.
diff --git a/sp-server-api/src/main/java/net/shibboleth/sp/criteria/package-info.java b/sp-server-api/src/main/java/net/shibboleth/sp/criteria/package-info.java
new file mode 100644
index 0000000..076179c
--- /dev/null
+++ b/sp-server-api/src/main/java/net/shibboleth/sp/criteria/package-info.java
@@ -0,0 +1,18 @@
+/*
+ * Licensed 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.
+ */
+
+/**
+ * SP-specific resolver {@link net.shibboleth.shared.resolver.Criterion}.
+ */
+package net.shibboleth.sp.criteria;
\ No newline at end of file
diff --git a/sp-server-impl/src/main/java/net/shibboleth/sp/authn/impl/InitializeAgentRequestContext.java b/sp-server-impl/src/main/java/net/shibboleth/sp/authn/impl/InitializeAgentRequestContext.java
index 78ef4c6..9e6e161 100644
--- a/sp-server-impl/src/main/java/net/shibboleth/sp/authn/impl/InitializeAgentRequestContext.java
+++ b/sp-server-impl/src/main/java/net/shibboleth/sp/authn/impl/InitializeAgentRequestContext.java
@@ -41,9 +41,9 @@ import net.shibboleth.shared.service.ReloadableService;
import net.shibboleth.shared.service.ServiceException;
import net.shibboleth.shared.service.ServiceableComponent;
import net.shibboleth.sp.Agent;
-import net.shibboleth.sp.AgentCredentialCriterion;
import net.shibboleth.sp.AgentResolver;
import net.shibboleth.sp.context.AgentRequestContext;
+import net.shibboleth.sp.criteria.AgentCredentialCriterion;
/**
* An authentication action that relies on extracted HTTP authentication credentials
diff --git a/sp-server-impl/src/main/java/net/shibboleth/sp/credential/impl/CredentialResolverBridge.java b/sp-server-impl/src/main/java/net/shibboleth/sp/credential/impl/CredentialResolverBridge.java
index 6c1953e..0af1657 100644
--- a/sp-server-impl/src/main/java/net/shibboleth/sp/credential/impl/CredentialResolverBridge.java
+++ b/sp-server-impl/src/main/java/net/shibboleth/sp/credential/impl/CredentialResolverBridge.java
@@ -37,10 +37,10 @@ import net.shibboleth.shared.resolver.ResolverException;
import net.shibboleth.shared.service.ReloadableService;
import net.shibboleth.shared.service.ServiceableComponent;
import net.shibboleth.sp.Agent;
-import net.shibboleth.sp.AgentIDCriterion;
import net.shibboleth.sp.Application;
-import net.shibboleth.sp.ApplicationIDCriterion;
import net.shibboleth.sp.context.AgentRequestContext;
+import net.shibboleth.sp.criteria.AgentIDCriterion;
+import net.shibboleth.sp.criteria.ApplicationIDCriterion;
/**
* Support object for bridging legacy OpenSAML interfaces to new credential resolver service.
diff --git a/sp-server-impl/src/main/java/net/shibboleth/sp/credential/impl/StaticMapCredentialResolver.java b/sp-server-impl/src/main/java/net/shibboleth/sp/credential/impl/StaticMapCredentialResolver.java
index 6490fc3..97d1b27 100644
--- a/sp-server-impl/src/main/java/net/shibboleth/sp/credential/impl/StaticMapCredentialResolver.java
+++ b/sp-server-impl/src/main/java/net/shibboleth/sp/credential/impl/StaticMapCredentialResolver.java
@@ -38,10 +38,10 @@ import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.Criterion;
import net.shibboleth.shared.resolver.ResolverException;
import net.shibboleth.sp.Agent;
-import net.shibboleth.sp.AgentIDCriterion;
import net.shibboleth.sp.Application;
-import net.shibboleth.sp.ApplicationIDCriterion;
import net.shibboleth.sp.credential.AbstractOrderedCredentialResolver;
+import net.shibboleth.sp.criteria.AgentIDCriterion;
+import net.shibboleth.sp.criteria.ApplicationIDCriterion;
/**
* A static resolver that relies on maps to associate credentials with the core objects
diff --git a/sp-server-impl/src/main/java/net/shibboleth/sp/impl/DefaultAgentResolver.java b/sp-server-impl/src/main/java/net/shibboleth/sp/impl/DefaultAgentResolver.java
index 8577bd3..6146028 100644
--- a/sp-server-impl/src/main/java/net/shibboleth/sp/impl/DefaultAgentResolver.java
+++ b/sp-server-impl/src/main/java/net/shibboleth/sp/impl/DefaultAgentResolver.java
@@ -32,8 +32,8 @@ import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
import net.shibboleth.shared.spring.config.IdentifiedComponentManager;
import net.shibboleth.sp.Agent;
-import net.shibboleth.sp.AgentCredentialCriterion;
import net.shibboleth.sp.AgentResolver;
+import net.shibboleth.sp.criteria.AgentCredentialCriterion;
/**
* Default implementation of {@link AgentResolver}.
diff --git a/sp-server-impl/src/test/java/net/shibboleth/sp/credential/impl/StaticMapCredentialResolverTest.java b/sp-server-impl/src/test/java/net/shibboleth/sp/credential/impl/StaticMapCredentialResolverTest.java
index fe568a5..5102f3a 100644
--- a/sp-server-impl/src/test/java/net/shibboleth/sp/credential/impl/StaticMapCredentialResolverTest.java
+++ b/sp-server-impl/src/test/java/net/shibboleth/sp/credential/impl/StaticMapCredentialResolverTest.java
@@ -26,8 +26,8 @@ import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.component.ComponentInitializationException;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.resolver.ResolverException;
-import net.shibboleth.sp.AgentIDCriterion;
-import net.shibboleth.sp.ApplicationIDCriterion;
+import net.shibboleth.sp.criteria.AgentIDCriterion;
+import net.shibboleth.sp.criteria.ApplicationIDCriterion;
import org.opensaml.core.criterion.EntityIdCriterion;
import org.opensaml.profile.context.ProfileRequestContext;
diff --git a/sp-server-impl/src/test/java/net/shibboleth/sp/credential/impl/X509CredentialStorageServiceResolverTest.java b/sp-server-impl/src/test/java/net/shibboleth/sp/credential/impl/X509CredentialStorageServiceResolverTest.java
index 93a7fe7..43dacb0 100644
--- a/sp-server-impl/src/test/java/net/shibboleth/sp/credential/impl/X509CredentialStorageServiceResolverTest.java
+++ b/sp-server-impl/src/test/java/net/shibboleth/sp/credential/impl/X509CredentialStorageServiceResolverTest.java
@@ -42,8 +42,8 @@ import net.shibboleth.shared.collection.CollectionSupport;
import net.shibboleth.shared.resolver.CriteriaSet;
import net.shibboleth.shared.security.impl.SelfSignedCertificateGenerator;
import net.shibboleth.shared.testing.VelocityEngine;
-import net.shibboleth.sp.AgentIDCriterion;
-import net.shibboleth.sp.ApplicationIDCriterion;
+import net.shibboleth.sp.criteria.AgentIDCriterion;
+import net.shibboleth.sp.criteria.ApplicationIDCriterion;
import net.shibboleth.sp.storage.impl.FilesystemStorageService;
/**
diff --git a/sp-testing/src/main/java/net/shibboleth/sp/testing/MockAgentResolver.java b/sp-testing/src/main/java/net/shibboleth/sp/testing/MockAgentResolver.java
index d8ada29..37626ab 100644
--- a/sp-testing/src/main/java/net/shibboleth/sp/testing/MockAgentResolver.java
+++ b/sp-testing/src/main/java/net/shibboleth/sp/testing/MockAgentResolver.java
@@ -24,8 +24,8 @@ import net.shibboleth.shared.service.ReloadableService;
import net.shibboleth.shared.testing.MockReloadableService;
import net.shibboleth.shared.testing.MockResolver;
import net.shibboleth.sp.Agent;
-import net.shibboleth.sp.AgentCredentialCriterion;
import net.shibboleth.sp.AgentResolver;
+import net.shibboleth.sp.criteria.AgentCredentialCriterion;
/**
* Mock {@link AgentResolver} for tests.
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list