[java-identity-provider] branch main updated: JSPROF-1 - Move RelyingParty "layer" into java-shib-profile
Scott Cantor
cantor.2 at osu.edu
Wed Feb 15 16:08:03 UTC 2023
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch main
in repository java-identity-provider.
View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=9e08da9b9b6327b588720d4ba71ed28d582b0b5c
The following commit(s) were added to refs/heads/main by this push:
new 9e08da9b9 JSPROF-1 - Move RelyingParty "layer" into java-shib-profile
9e08da9b9 is described below
commit 9e08da9b9b6327b588720d4ba71ed28d582b0b5c
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Wed Feb 15 11:07:59 2023 -0500
JSPROF-1 - Move RelyingParty "layer" into java-shib-profile
https://shibboleth.atlassian.net/browse/JSPROF-1
Move predicates out.
Stubs left for commonly used condition classes in configurations.
---
.../navigate/ForceAuthnProfileConfigPredicate.java | 2 +-
.../net/shibboleth/idp/conf/conditions.xml | 2 +-
.../net/shibboleth/idp/conf/global-system.xml | 167 ++++++++++---------
.../net/shibboleth/idp/conf/services-system.xml | 2 +-
.../idp/flows/saml/saml1/sso-abstract-beans.xml | 2 +-
.../idp/flows/saml/saml2/sso-abstract-beans.xml | 2 +-
idp-profile-api/pom.xml | 71 --------
.../config/logic/DetailedErrorsPredicate.java | 4 +-
.../config/logic/ResolveAttributesPredicate.java | 51 ------
.../navigate}/SpringFlowScopeLookupFunction.java | 2 +-
.../idp/profile/function/package-info.java | 22 ---
.../profile/logic/AbstractAttributePredicate.java | 139 ----------------
.../logic/AbstractRelyingPartyPredicate.java | 67 --------
.../idp/profile/logic/DateAttributePredicate.java | 131 ++-------------
.../profile/logic/DynamicAttributePredicate.java | 180 ++-------------------
.../idp/profile/logic/LoopDetectionPredicate.java | 117 ++------------
.../idp/profile/logic/RegexAttributePredicate.java | 112 ++-----------
.../idp/profile/logic/ScriptedPredicate.java | 26 ++-
.../profile/logic/SimpleAttributePredicate.java | 151 +----------------
.../profile/logic/SpringExpressionPredicate.java | 24 +--
.../profile/logic/VerifiedProfilePredicate.java | 43 -----
.../messaging/AbstractRelyingPartyPredicate.java | 75 ---------
.../idp/profile/logic/messaging/package-info.java | 22 ---
.../shibboleth/idp/profile/logic/package-info.java | 2 +-
.../profile/logic/DateAttributePredicateTest.java | 158 ------------------
.../logic/DynamicAttributePredicateTest.java | 100 ------------
.../profile/logic/LoopDetectionPredicateTest.java | 82 ----------
.../idp/profile/logic/ScriptedPredicateTest.java | 107 ------------
.../logic/SimpleAttributePredicateTest.java | 117 --------------
.../shibboleth/idp/profile/logic/inlineBean.xml | 24 ---
.../shibboleth/idp/profile/logic/resourceBean.xml | 14 --
.../net/shibboleth/idp/profile/logic/script.js | 5 -
.../logic/IncludeAttributeStatementPredicate.java | 4 +-
.../logic/NotBeforeProfileConfigPredicate.java | 4 +-
.../config/logic/SignAssertionsPredicate.java | 4 +-
.../config/logic/SignRequestsPredicate.java | 4 +-
.../config/logic/SignResponsesPredicate.java | 4 +-
.../ClientTLSArtifactRequestsPredicate.java | 4 +-
.../ClientTLSSOAPLogoutRequestsPredicate.java | 4 +-
.../messaging/SignArtifactRequestsPredicate.java | 4 +-
.../messaging/SignSOAPLogoutRequestsPredicate.java | 4 +-
.../config/logic/CheckAddressPredicate.java | 4 +-
.../logic/IgnoreRequestSignaturesPredicate.java | 4 +-
.../logic/IgnoreScopingProfileConfigPredicate.java | 4 +-
.../profile/config/logic/SOAPErrorPredicate.java | 4 +-
.../SuppressAuthenticatingAuthorityPredicate.java | 4 +-
.../impl/RelyingPartyConfigurationSupport.java | 2 +-
47 files changed, 193 insertions(+), 1888 deletions(-)
diff --git a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/config/navigate/ForceAuthnProfileConfigPredicate.java b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/config/navigate/ForceAuthnProfileConfigPredicate.java
index 93be7dd09..d656997eb 100644
--- a/idp-authn-api/src/main/java/net/shibboleth/idp/authn/config/navigate/ForceAuthnProfileConfigPredicate.java
+++ b/idp-authn-api/src/main/java/net/shibboleth/idp/authn/config/navigate/ForceAuthnProfileConfigPredicate.java
@@ -20,9 +20,9 @@ package net.shibboleth.idp.authn.config.navigate;
import javax.annotation.Nullable;
import net.shibboleth.idp.authn.config.AuthenticationProfileConfiguration;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
import org.opensaml.profile.context.ProfileRequestContext;
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/conditions.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/conditions.xml
index 6fdb45296..2fb9ea78e 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/conditions.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/conditions.xml
@@ -34,7 +34,7 @@
<bean id="shibboleth.Conditions.BrowserProfile"
class="org.opensaml.profile.logic.BrowserProfilePredicate" />
<bean id="shibboleth.Conditions.RelyingPartyId"
- class="net.shibboleth.profile.logic.RelyingPartyIdPredicate" abstract="true" />
+ class="net.shibboleth.profile.context.logic.RelyingPartyIdPredicate" abstract="true" />
<bean id="shibboleth.Conditions.Scripted"
class="net.shibboleth.idp.profile.logic.ScriptedPredicate" abstract="true" />
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/global-system.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/global-system.xml
index 070947345..943dd85e5 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/global-system.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/global-system.xml
@@ -39,90 +39,89 @@
<!-- This BeanFactoryPostProcessor rewrites class and parent references to relocated classes or beans. -->
<bean id="shibboleth.RelocatedBeanFactoryPostProcessor"
- class="net.shibboleth.shared.spring.config.RelocatedBeanFactoryPostProcessor">
- <property name="classes">
- <map>
- <!-- At present all of these are being added for V5 and would be removable for V6. -->
-
- <entry key="net.shibboleth.utilities.java.support.codec.StringDigester"
- value="net.shibboleth.shared.codec.StringDigester" />
-
- <entry key="net.shibboleth.utilities.java.support.logic.FunctionSupport"
- value="net.shibboleth.shared.logic.FunctionSupport" />
- <entry key="net.shibboleth.utilities.java.support.logic.PredicateSupport"
- value="net.shibboleth.shared.logic.PredicateSupport" />
- <entry key="net.shibboleth.utilities.java.support.logic.RegexPredicate"
- value="net.shibboleth.shared.logic.RegexPredicate" />
- <entry key="net.shibboleth.utilities.java.support.logic.ScriptedBiConsumer"
- value="net.shibboleth.shared.logic.ScriptedBiConsumer" />
- <entry key="net.shibboleth.utilities.java.support.logic.ScriptedBiFunction"
- value="net.shibboleth.shared.logic.ScriptedBiFunction" />
- <entry key="net.shibboleth.utilities.java.support.logic.ScriptedBiPredicate"
- value="net.shibboleth.shared.logic.ScriptedBiPredicate" />
- <entry key="net.shibboleth.utilities.java.support.logic.ScriptedConsumer"
- value="net.shibboleth.shared.logic.ScriptedConsumer" />
- <entry key="net.shibboleth.utilities.java.support.logic.ScriptedFunction"
- value="net.shibboleth.shared.logic.ScriptedFunction" />
- <entry key="net.shibboleth.utilities.java.support.logic.ScriptedPredicate"
- value="net.shibboleth.shared.logic.ScriptedPredicate" />
- <entry key="net.shibboleth.utilities.java.support.logic.StrategyIndirectedPredicate"
- value="net.shibboleth.shared.logic.StrategyIndirectedPredicate" />
-
- <entry key="net.shibboleth.utilities.java.support.net.DynamicResponseHeaderFilter"
- value="net.shibboleth.shared.net.impl.DynamicResponseHeaderFilter" />
- <entry key="net.shibboleth.utilities.java.support.net.SameSiteCookieHeaderFilter"
- value="net.shibboleth.shared.net.impl.SameSiteCookieHeaderFilter" />
-
- <entry key="net.shibboleth.utilities.java.support.velocity.Template"
- value="net.shibboleth.shared.velocity.Template" />
-
- <entry key="net.shibboleth.ext.spring.factory.KeyStoreFactoryBean"
- value="net.shibboleth.shared.spring.security.factory.KeyStoreFactoryBean" />
- <entry key="net.shibboleth.ext.spring.factory.PKCS11PrivateKeyFactoryBean"
- value="net.shibboleth.shared.spring.security.factory.PKCS11PrivateKeyFactoryBean" />
- <entry key="net.shibboleth.ext.spring.factory.PrivateKeyFactoryBean"
- value="net.shibboleth.shared.spring.security.factory.PrivateKeyFactoryBean" />
- <entry key="net.shibboleth.ext.spring.factory.PublicKeyFactoryBean"
- value="net.shibboleth.shared.spring.security.factory.PublicKeyFactoryBean" />
- <entry key="net.shibboleth.ext.spring.factory.X509CertificateFactoryBean"
- value="net.shibboleth.shared.spring.security.factory.X509CertificateFactoryBean" />
- <entry key="net.shibboleth.ext.spring.factory.X509CertificateChainFactoryBean"
- value="net.shibboleth.shared.spring.security.factory.X509CertificateChainFactoryBean" />
-
- <entry key="net.shibboleth.ext.spring.resource.HTTPResource"
- value="net.shibboleth.shared.spring.httpclient.resource.HTTPResource" />
- <entry key="net.shibboleth.ext.spring.resource.FileBackedHTTPResource"
- value="net.shibboleth.shared.spring.httpclient.resource.FileBackedHTTPResource" />
-
- <entry key="net.shibboleth.ext.spring.util.SpringExpressionBiConsumer"
- value="net.shibboleth.shared.spring.expression.SpringExpressionBiConsumer" />
- <entry key="net.shibboleth.ext.spring.util.SpringExpressionBiFunction"
- value="net.shibboleth.shared.spring.expression.SpringExpressionBiFunction" />
- <entry key="net.shibboleth.ext.spring.util.SpringExpressionBiPredicate"
- value="net.shibboleth.shared.spring.expression.SpringExpressionBiPredicate" />
- <entry key="net.shibboleth.ext.spring.util.SpringExpressionConsumer"
- value="net.shibboleth.shared.spring.expression.SpringExpressionConsumer" />
- <entry key="net.shibboleth.ext.spring.util.SpringExpressionFunction"
- value="net.shibboleth.shared.spring.expression.SpringExpressionFunction" />
- <entry key="net.shibboleth.ext.spring.util.SpringExpressionPredicate"
- value="net.shibboleth.shared.spring.expression.SpringExpressionPredicate" />
-
- <entry key="net.shibboleth.ext.spring.factory.CombiningListFactoryBean"
- value="net.shibboleth.shared.spring.factory.CombiningListFactoryBean" />
- <entry key="net.shibboleth.ext.spring.factory.DOMDocumentFactoryBean"
- value="net.shibboleth.shared.spring.factory.DOMDocumentFactoryBean" />
- <entry key="net.shibboleth.ext.spring.factory.EvaluableScriptFactoryBean"
- value="net.shibboleth.shared.spring.factory.EvaluableScriptFactoryBean" />
- <entry key="net.shibboleth.ext.spring.factory.PatternFactoryBean"
- value="net.shibboleth.shared.spring.factory.PatternFactoryBean" />
-
- <entry key="net.shibboleth.ext.spring.resource.ConditionalResource"
- value="net.shibboleth.shared.spring.resource.ConditionalResource" />
- <entry key="net.shibboleth.ext.spring.resource.RunnableFileSystemResource"
- value="net.shibboleth.shared.spring.resource.RunnableFileSystemResource" />
- </map>
- </property>
- </bean>
+ class="net.shibboleth.shared.spring.config.RelocatedBeanFactoryPostProcessor"
+ p:classes-ref="shibboleth.RelocatedClassMap"/>
+
+ <util:map id="shibboleth.RelocatedClassMap">
+ <!-- At present all of these are being added for V5 and would be removable for V6. -->
+
+ <entry key="net.shibboleth.utilities.java.support.codec.StringDigester"
+ value="net.shibboleth.shared.codec.StringDigester" />
+
+ <entry key="net.shibboleth.utilities.java.support.logic.FunctionSupport"
+ value="net.shibboleth.shared.logic.FunctionSupport" />
+ <entry key="net.shibboleth.utilities.java.support.logic.PredicateSupport"
+ value="net.shibboleth.shared.logic.PredicateSupport" />
+ <entry key="net.shibboleth.utilities.java.support.logic.RegexPredicate"
+ value="net.shibboleth.shared.logic.RegexPredicate" />
+ <entry key="net.shibboleth.utilities.java.support.logic.ScriptedBiConsumer"
+ value="net.shibboleth.shared.logic.ScriptedBiConsumer" />
+ <entry key="net.shibboleth.utilities.java.support.logic.ScriptedBiFunction"
+ value="net.shibboleth.shared.logic.ScriptedBiFunction" />
+ <entry key="net.shibboleth.utilities.java.support.logic.ScriptedBiPredicate"
+ value="net.shibboleth.shared.logic.ScriptedBiPredicate" />
+ <entry key="net.shibboleth.utilities.java.support.logic.ScriptedConsumer"
+ value="net.shibboleth.shared.logic.ScriptedConsumer" />
+ <entry key="net.shibboleth.utilities.java.support.logic.ScriptedFunction"
+ value="net.shibboleth.shared.logic.ScriptedFunction" />
+ <entry key="net.shibboleth.utilities.java.support.logic.ScriptedPredicate"
+ value="net.shibboleth.shared.logic.ScriptedPredicate" />
+ <entry key="net.shibboleth.utilities.java.support.logic.StrategyIndirectedPredicate"
+ value="net.shibboleth.shared.logic.StrategyIndirectedPredicate" />
+
+ <entry key="net.shibboleth.utilities.java.support.net.DynamicResponseHeaderFilter"
+ value="net.shibboleth.shared.net.impl.DynamicResponseHeaderFilter" />
+ <entry key="net.shibboleth.utilities.java.support.net.SameSiteCookieHeaderFilter"
+ value="net.shibboleth.shared.net.impl.SameSiteCookieHeaderFilter" />
+
+ <entry key="net.shibboleth.utilities.java.support.velocity.Template"
+ value="net.shibboleth.shared.velocity.Template" />
+
+ <entry key="net.shibboleth.ext.spring.factory.KeyStoreFactoryBean"
+ value="net.shibboleth.shared.spring.security.factory.KeyStoreFactoryBean" />
+ <entry key="net.shibboleth.ext.spring.factory.PKCS11PrivateKeyFactoryBean"
+ value="net.shibboleth.shared.spring.security.factory.PKCS11PrivateKeyFactoryBean" />
+ <entry key="net.shibboleth.ext.spring.factory.PrivateKeyFactoryBean"
+ value="net.shibboleth.shared.spring.security.factory.PrivateKeyFactoryBean" />
+ <entry key="net.shibboleth.ext.spring.factory.PublicKeyFactoryBean"
+ value="net.shibboleth.shared.spring.security.factory.PublicKeyFactoryBean" />
+ <entry key="net.shibboleth.ext.spring.factory.X509CertificateFactoryBean"
+ value="net.shibboleth.shared.spring.security.factory.X509CertificateFactoryBean" />
+ <entry key="net.shibboleth.ext.spring.factory.X509CertificateChainFactoryBean"
+ value="net.shibboleth.shared.spring.security.factory.X509CertificateChainFactoryBean" />
+
+ <entry key="net.shibboleth.ext.spring.resource.HTTPResource"
+ value="net.shibboleth.shared.spring.httpclient.resource.HTTPResource" />
+ <entry key="net.shibboleth.ext.spring.resource.FileBackedHTTPResource"
+ value="net.shibboleth.shared.spring.httpclient.resource.FileBackedHTTPResource" />
+
+ <entry key="net.shibboleth.ext.spring.util.SpringExpressionBiConsumer"
+ value="net.shibboleth.shared.spring.expression.SpringExpressionBiConsumer" />
+ <entry key="net.shibboleth.ext.spring.util.SpringExpressionBiFunction"
+ value="net.shibboleth.shared.spring.expression.SpringExpressionBiFunction" />
+ <entry key="net.shibboleth.ext.spring.util.SpringExpressionBiPredicate"
+ value="net.shibboleth.shared.spring.expression.SpringExpressionBiPredicate" />
+ <entry key="net.shibboleth.ext.spring.util.SpringExpressionConsumer"
+ value="net.shibboleth.shared.spring.expression.SpringExpressionConsumer" />
+ <entry key="net.shibboleth.ext.spring.util.SpringExpressionFunction"
+ value="net.shibboleth.shared.spring.expression.SpringExpressionFunction" />
+ <entry key="net.shibboleth.ext.spring.util.SpringExpressionPredicate"
+ value="net.shibboleth.shared.spring.expression.SpringExpressionPredicate" />
+
+ <entry key="net.shibboleth.ext.spring.factory.CombiningListFactoryBean"
+ value="net.shibboleth.shared.spring.factory.CombiningListFactoryBean" />
+ <entry key="net.shibboleth.ext.spring.factory.DOMDocumentFactoryBean"
+ value="net.shibboleth.shared.spring.factory.DOMDocumentFactoryBean" />
+ <entry key="net.shibboleth.ext.spring.factory.EvaluableScriptFactoryBean"
+ value="net.shibboleth.shared.spring.factory.EvaluableScriptFactoryBean" />
+ <entry key="net.shibboleth.ext.spring.factory.PatternFactoryBean"
+ value="net.shibboleth.shared.spring.factory.PatternFactoryBean" />
+
+ <entry key="net.shibboleth.ext.spring.resource.ConditionalResource"
+ value="net.shibboleth.shared.spring.resource.ConditionalResource" />
+ <entry key="net.shibboleth.ext.spring.resource.RunnableFileSystemResource"
+ value="net.shibboleth.shared.spring.resource.RunnableFileSystemResource" />
+ </util:map>
<!-- This extends the original user-space resource list with the classpath-embedded message tree. -->
<bean id ="ExtendedMessageSourceResources" parent="shibboleth.ListCombiner"
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/services-system.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/services-system.xml
index 2d8ba96be..4ffb8c1e2 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/services-system.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/conf/services-system.xml
@@ -91,7 +91,7 @@
<constructor-arg name="strategy">
<bean class="net.shibboleth.idp.attribute.transcoding.impl.AttributeRegistryServiceStrategy">
<property name="extendedConditionFactory">
- <bean class="net.shibboleth.profile.logic.impl.RelyingPartiesActivationConditionFactory" />
+ <bean class="net.shibboleth.profile.context.logic.impl.RelyingPartiesActivationConditionFactory" />
</property>
</bean>
</constructor-arg>
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml1/sso-abstract-beans.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml1/sso-abstract-beans.xml
index 7c35ebacf..d069fe460 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml1/sso-abstract-beans.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml1/sso-abstract-beans.xml
@@ -31,7 +31,7 @@
class="org.opensaml.profile.action.impl.StaticMessageChannelSecurity" scope="prototype"
p:confidentialityActive="false" p:integrityActive="false" />
- <bean id="ResolveAttributesPredicate" class="net.shibboleth.idp.profile.config.logic.ResolveAttributesPredicate" />
+ <bean id="ResolveAttributesPredicate" class="net.shibboleth.profile.config.logic.ResolveAttributesPredicate" />
<bean id="AddNameIdentifierToSubjects"
class="org.opensaml.saml.saml1.profile.impl.AddNameIdentifierToSubjects" scope="prototype">
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml2/sso-abstract-beans.xml b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml2/sso-abstract-beans.xml
index 1c9588674..bc0c94716 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml2/sso-abstract-beans.xml
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/flows/saml/saml2/sso-abstract-beans.xml
@@ -59,7 +59,7 @@
</constructor-arg>
</bean>
- <bean id="ResolveAttributesPredicate" class="net.shibboleth.idp.profile.config.logic.ResolveAttributesPredicate" />
+ <bean id="ResolveAttributesPredicate" class="net.shibboleth.profile.config.logic.ResolveAttributesPredicate" />
<bean id="AddNameIDToSubjects"
class="org.opensaml.saml.saml2.profile.impl.AddNameIDToSubjects" scope="prototype">
diff --git a/idp-profile-api/pom.xml b/idp-profile-api/pom.xml
index 18cc02fae..4a766f62a 100644
--- a/idp-profile-api/pom.xml
+++ b/idp-profile-api/pom.xml
@@ -26,59 +26,25 @@
<groupId>net.shibboleth</groupId>
<artifactId>shib-profile-api</artifactId>
</dependency>
- <dependency>
- <groupId>net.shibboleth</groupId>
- <artifactId>shib-attribute-api</artifactId>
- </dependency>
- <dependency>
- <groupId>${opensaml.groupId}</groupId>
- <artifactId>opensaml-core-api</artifactId>
- </dependency>
<dependency>
<groupId>${opensaml.groupId}</groupId>
<artifactId>opensaml-profile-api</artifactId>
</dependency>
- <dependency>
- <groupId>${opensaml.groupId}</groupId>
- <artifactId>opensaml-security-api</artifactId>
- </dependency>
<dependency>
<groupId>${opensaml.groupId}</groupId>
<artifactId>opensaml-storage-api</artifactId>
</dependency>
- <dependency>
- <groupId>${opensaml.groupId}</groupId>
- <artifactId>opensaml-xmlsec-api</artifactId>
- </dependency>
<dependency>
<groupId>${opensaml.groupId}</groupId>
<artifactId>opensaml-messaging-api</artifactId>
</dependency>
- <dependency>
- <groupId>${shib-shared.groupId}</groupId>
- <artifactId>shib-security</artifactId>
- </dependency>
- <dependency>
- <groupId>${shib-shared.groupId}</groupId>
- <artifactId>shib-service</artifactId>
- </dependency>
- <dependency>
- <groupId>${shib-shared.groupId}</groupId>
- <artifactId>shib-spring</artifactId>
- </dependency>
-
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
- <dependency>
- <groupId>io.dropwizard.metrics</groupId>
- <artifactId>metrics-core</artifactId>
- </dependency>
-
<dependency>
<groupId>${spring.groupId}</groupId>
<artifactId>spring-beans</artifactId>
@@ -91,10 +57,6 @@
<groupId>${spring.groupId}</groupId>
<artifactId>spring-core</artifactId>
</dependency>
- <dependency>
- <groupId>${spring.groupId}</groupId>
- <artifactId>spring-expression</artifactId>
- </dependency>
<dependency>
<groupId>${spring-webflow.groupId}</groupId>
<artifactId>spring-webflow</artifactId>
@@ -110,42 +72,9 @@
<!-- Runtime Dependencies -->
<!-- Test Dependencies -->
- <!-- Needed for XMLObject providers. -->
- <dependency>
- <groupId>${opensaml.groupId}</groupId>
- <artifactId>opensaml-core-impl</artifactId>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>${opensaml.groupId}</groupId>
- <artifactId>opensaml-testing</artifactId>
- <scope>test</scope>
- </dependency>
</dependencies>
- <profiles>
- <!--
- Pull in a Javascript engine for testing in Java
- versions where the JDK doesn't provide one.
- -->
- <profile>
- <id>get-nashorn</id>
- <activation>
- <jdk>[15,</jdk>
- </activation>
- <dependencies>
- <dependency>
- <groupId>org.openjdk.nashorn</groupId>
- <artifactId>nashorn-core</artifactId>
- <version>${nashorn.jdk.version}</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- </profile>
- </profiles>
-
<scm>
<connection>${shibboleth.scm.connection}java-identity-provider</connection>
<developerConnection>${shibboleth.scm.developerConnection}java-identity-provider</developerConnection>
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/config/logic/DetailedErrorsPredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/config/logic/DetailedErrorsPredicate.java
index 3cabf0609..1dbc640c4 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/config/logic/DetailedErrorsPredicate.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/config/logic/DetailedErrorsPredicate.java
@@ -19,9 +19,9 @@ package net.shibboleth.idp.profile.config.logic;
import javax.annotation.Nullable;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.profile.relyingparty.RelyingPartyConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
import org.opensaml.profile.context.ProfileRequestContext;
@@ -33,7 +33,7 @@ public class DetailedErrorsPredicate extends AbstractRelyingPartyPredicate {
/** {@inheritDoc} */
public boolean test(@Nullable final ProfileRequestContext input) {
if (input != null) {
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final net.shibboleth.profile.relyingparty.RelyingPartyConfiguration config = rpc.getConfiguration();
if (config instanceof RelyingPartyConfiguration) {
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/config/logic/ResolveAttributesPredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/config/logic/ResolveAttributesPredicate.java
deleted file mode 100644
index 8a0c400f0..000000000
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/config/logic/ResolveAttributesPredicate.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.profile.config.logic;
-
-import javax.annotation.Nullable;
-
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
-import net.shibboleth.profile.config.AttributeResolvingProfileConfiguration;
-import net.shibboleth.profile.config.ProfileConfiguration;
-import net.shibboleth.profile.context.RelyingPartyContext;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-
-/**
- * Predicate to determine whether a profile request should resolve attributes.
- *
- * @since 4.2.0
- */
-public class ResolveAttributesPredicate extends AbstractRelyingPartyPredicate {
-
- /** {@inheritDoc} */
- public boolean test(@Nullable final ProfileRequestContext input) {
- if (input != null) {
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
- if (rpc != null) {
- final ProfileConfiguration pc = rpc.getProfileConfig();
- if (pc instanceof AttributeResolvingProfileConfiguration) {
- return ((AttributeResolvingProfileConfiguration) pc).isResolveAttributes(input);
- }
- }
- }
-
- return false;
- }
-
-}
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/function/SpringFlowScopeLookupFunction.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/context/navigate/SpringFlowScopeLookupFunction.java
similarity index 97%
rename from idp-profile-api/src/main/java/net/shibboleth/idp/profile/function/SpringFlowScopeLookupFunction.java
rename to idp-profile-api/src/main/java/net/shibboleth/idp/profile/context/navigate/SpringFlowScopeLookupFunction.java
index 0c4f18f6a..2ca18a0e4 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/function/SpringFlowScopeLookupFunction.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/context/navigate/SpringFlowScopeLookupFunction.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package net.shibboleth.idp.profile.function;
+package net.shibboleth.idp.profile.context.navigate;
import java.util.function.Function;
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/function/package-info.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/function/package-info.java
deleted file mode 100644
index 953b86b83..000000000
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/function/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.
- */
-
-/**
- * Functional classes for profile behavior.
- */
-
-package net.shibboleth.idp.profile.function;
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/AbstractAttributePredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/AbstractAttributePredicate.java
deleted file mode 100644
index 0791b770c..000000000
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/AbstractAttributePredicate.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * 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.profile.logic;
-
-import java.util.Map;
-import java.util.function.Function;
-import java.util.function.Predicate;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.opensaml.messaging.context.navigate.ChildContextLookup;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.context.AttributeContext;
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
-import net.shibboleth.shared.logic.Constraint;
-import net.shibboleth.shared.primitive.LoggerFactory;
-
-/**
- * Abstract base class for predicates operating on an {@link AttributeContext}.
- */
-public abstract class AbstractAttributePredicate implements Predicate<ProfileRequestContext> {
-
- /** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(AbstractAttributePredicate.class);
-
- /** Strategy function to lookup {@link AttributeContext}. */
- @Nonnull private Function<ProfileRequestContext,AttributeContext> attributeContextLookupStrategy;
-
- /** Whether to look at filtered or unfiltered attributes. */
- private boolean useUnfilteredAttributes;
-
- /** Constructor. */
- public AbstractAttributePredicate() {
- attributeContextLookupStrategy =
- new ChildContextLookup<>(AttributeContext.class).compose(
- new ChildContextLookup<>(RelyingPartyContext.class));
- useUnfilteredAttributes = true;
- }
-
- /**
- * Get the lookup strategy to use to locate the {@link AttributeContext}.
- *
- * @return lookup strategy to use
- */
- @Nonnull public Function<ProfileRequestContext,AttributeContext> getAttributeContextLookupStrategy() {
- return attributeContextLookupStrategy;
- }
-
- /**
- * Set the lookup strategy to use to locate the {@link AttributeContext}.
- *
- * @param strategy lookup function to use
- */
- public void setAttributeContextLookupStrategy(
- @Nonnull final Function<ProfileRequestContext,AttributeContext> strategy) {
-
- attributeContextLookupStrategy =
- Constraint.isNotNull(strategy, "AttributeContext lookup strategy cannot be null");
- }
-
- /**
- * Get whether to source the input attributes from the unfiltered set.
- *
- * @return whether to source the input attributes from the unfiltered set
- */
- public boolean isUseUnfilteredAttributes() {
- return useUnfilteredAttributes;
- }
-
- /**
- * Set whether to source the input attributes from the unfiltered set.
- *
- * <p>Defaults to true.</p>
- *
- * @param flag flag to set
- */
- public void setUseUnfilteredAttributes(final boolean flag) {
- useUnfilteredAttributes = flag;
- }
-
- /** {@inheritDoc} */
- public boolean test(@Nullable final ProfileRequestContext input) {
-
- final AttributeContext attributeCtx = attributeContextLookupStrategy.apply(input);
- if (attributeCtx == null) {
- log.warn("No AttributeContext located for evaluation");
- return allowNullAttributeContext();
- }
-
- final Map<String,IdPAttribute> attributes = useUnfilteredAttributes
- ? attributeCtx.getUnfilteredIdPAttributes()
- : attributeCtx.getIdPAttributes();
-
- if (hasMatch(attributes)) {
- log.debug("Context satisfied requirements");
- return true;
- }
- return false;
- }
-
- /**
- * Get the result of the predicate in the case the attribute context is null.
- *
- * @return null context result
- */
- protected boolean allowNullAttributeContext() {
- return false;
- }
-
- /**
- * Abstract implementation of the condition to evaluate.
- *
- * @param attributeMap the attributes to evaluate
- *
- * @return the condition result
- */
- protected abstract boolean hasMatch(@Nonnull @NonnullElements final Map<String,IdPAttribute> attributeMap);
-
-}
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/AbstractRelyingPartyPredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/AbstractRelyingPartyPredicate.java
deleted file mode 100644
index 282308aae..000000000
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/AbstractRelyingPartyPredicate.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.profile.logic;
-
-import java.util.function.Function;
-
-import javax.annotation.Nonnull;
-
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.shared.logic.Constraint;
-
-import java.util.function.Predicate;
-
-import org.opensaml.messaging.context.navigate.ChildContextLookup;
-import org.opensaml.profile.context.ProfileRequestContext;
-
-/**
- * Base class for a predicate that evaluates a {@link ProfileRequestContext} and requires access to a
- * {@link RelyingPartyContext}.
- */
-public abstract class AbstractRelyingPartyPredicate implements Predicate<ProfileRequestContext> {
-
- /** Strategy function to lookup RelyingPartyContext. */
- @Nonnull private Function<ProfileRequestContext,RelyingPartyContext> relyingPartyContextLookupStrategy;
-
- /** Constructor. */
- public AbstractRelyingPartyPredicate() {
- relyingPartyContextLookupStrategy = new ChildContextLookup<>(RelyingPartyContext.class);
- }
-
- /**
- * Get the lookup strategy to use to locate the {@link RelyingPartyContext}.
- *
- * @return lookup function to use
- */
- @Nonnull public Function<ProfileRequestContext,RelyingPartyContext> getRelyingPartyContextLookupStrategy() {
- return relyingPartyContextLookupStrategy;
- }
-
- /**
- * Set the lookup strategy to use to locate the {@link RelyingPartyContext}.
- *
- * @param strategy lookup function to use
- */
- public void setRelyingPartyContextLookupStrategy(
- @Nonnull final Function<ProfileRequestContext,RelyingPartyContext> strategy) {
-
- relyingPartyContextLookupStrategy =
- Constraint.isNotNull(strategy, "RelyingPartyContext lookup strategy cannot be null");
- }
-
-}
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/DateAttributePredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/DateAttributePredicate.java
index 99d3e3cc7..7b7035edd 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/DateAttributePredicate.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/DateAttributePredicate.java
@@ -17,51 +17,22 @@
package net.shibboleth.idp.profile.logic;
-import java.time.DateTimeException;
-import java.time.Duration;
-import java.time.Instant;
import java.time.format.DateTimeFormatter;
-import java.util.Map;
import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import org.slf4j.Logger;
-
-import net.shibboleth.idp.attribute.DateTimeAttributeValue;
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.StringAttributeValue;
import net.shibboleth.shared.annotation.ParameterName;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
-import net.shibboleth.shared.logic.Constraint;
-import net.shibboleth.shared.primitive.LoggerFactory;
+import net.shibboleth.shared.primitive.DeprecationSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
/**
- * Provides a date/time matching predicate that compares a date-based attribute value against
- * current system time with optional offset. By convention the predicate returns true if and only if
- * the date represented by the attribute value is after the current system time; false otherwise.
- * Thus the semantics are well-suited for cases such as evaluation of expiration dates.
- *
- * @author Marvin S. Addison
+ * Deprecated stub for relocated class.
+ *
+ * @deprecated
*/
-public class DateAttributePredicate extends AbstractAttributePredicate {
-
- /** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(DateAttributePredicate.class);
-
- /** Name of attribute to query for. */
- @Nonnull @NotEmpty private final String attributeName;
-
- /** Formatter used to parse string-based date attribute values. */
- @Nullable private final DateTimeFormatter dateTimeFormatter;
-
- /** Offset from system time used for date comparisons. */
- @Nonnull private Duration systemTimeOffset;
-
- /** Result of predicate if attribute is missing or has no values. */
- private boolean resultIfMissing;
+ at Deprecated(since="5.0.0", forRemoval=true)
+public class DateAttributePredicate extends net.shibboleth.profile.context.logic.DateAttributePredicate {
/**
* Create a new instance that performs date comparisons against the given attribute.
@@ -69,9 +40,9 @@ public class DateAttributePredicate extends AbstractAttributePredicate {
* @param attribute Attribute name that provides candidate date values to test.
*/
public DateAttributePredicate(@Nonnull @NotEmpty @ParameterName(name="attribute") final String attribute) {
- attributeName = Constraint.isNotNull(attribute, "Attribute cannot be null");
- dateTimeFormatter = null;
- systemTimeOffset = Duration.ZERO;
+ super(attribute);
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), null,
+ net.shibboleth.profile.context.logic.DateAttributePredicate.class.getName());
}
/**
@@ -83,10 +54,9 @@ public class DateAttributePredicate extends AbstractAttributePredicate {
*/
public DateAttributePredicate(@Nonnull @NotEmpty @ParameterName(name="attribute") final String attribute,
@Nonnull @ParameterName(name="formatter") final DateTimeFormatter formatter) {
-
- attributeName = Constraint.isNotNull(attribute, "Attribute cannot be null");
- dateTimeFormatter = Constraint.isNotNull(formatter, "Formatter cannot be null");
- systemTimeOffset = Duration.ZERO;
+ super(attribute, formatter);
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), null,
+ net.shibboleth.profile.context.logic.DateAttributePredicate.class.getName());
}
/**
@@ -98,78 +68,9 @@ public class DateAttributePredicate extends AbstractAttributePredicate {
*/
public DateAttributePredicate(@Nonnull @NotEmpty @ParameterName(name="attribute") final String attribute,
@Nonnull @NotEmpty @ParameterName(name="formatString") final String formatString) {
- attributeName = Constraint.isNotNull(attribute, "Attribute cannot be null");
- dateTimeFormatter = DateTimeFormatter.ofPattern(
- Constraint.isNotNull(formatString, "Format string cannot be null"));
- systemTimeOffset = Duration.ZERO;
- }
-
- /**
- * Set the system time offset, which affects the reference date for comparisons.
- *
- * <p>By default all comparisons are against system time, i.e. zero offset.</p>
- *
- * @param offset System time offset. A negative value decreases the target date (sooner);
- * a positive value increases the target date (later).
- */
- public void setOffset(@Nonnull final java.time.Duration offset) {
- systemTimeOffset = Constraint.isNotNull(offset, "Offset cannot be null");
- }
-
- /**
- * Set the result to return if the attribute to check is missing or has no values.
- *
- * @param flag flag to set
- */
- public void setResultIfMissing(final boolean flag) {
- resultIfMissing = flag;
- }
-
- /** {@inheritDoc} */
- @Override
- protected boolean allowNullAttributeContext() {
- return resultIfMissing;
- }
-
- /** {@inheritDoc} */
- @Override
- protected boolean hasMatch(@Nonnull @NonnullElements final Map<String,IdPAttribute> attributeMap) {
-
- final IdPAttribute attribute = attributeMap.get(attributeName);
- if (attribute == null) {
- log.debug("Attribute {} not found in context, returning {}", attributeName, resultIfMissing);
- return resultIfMissing;
- } else if (attribute.getValues().isEmpty()) {
- log.debug("Attribute {} has no values, returning {}", attributeName, resultIfMissing);
- return resultIfMissing;
- }
-
- final Instant now = Instant.now();
-
- String dateString;
- for (final IdPAttributeValue value : attribute.getValues()) {
- if (value instanceof DateTimeAttributeValue &&
- ((DateTimeAttributeValue) value).getValue().plus(systemTimeOffset).isAfter(now)) {
- return true;
- } else if (value instanceof StringAttributeValue) {
- if (dateTimeFormatter == null) {
- log.warn("No DateTimeFormatter configured, ignoring string value");
- continue;
- }
- dateString = ((StringAttributeValue) value).getValue();
- try {
- assert dateTimeFormatter != null;
- if (Instant.from(dateTimeFormatter.parse(dateString)).plus(systemTimeOffset).isAfter(now)) {
- return true;
- }
- } catch (final DateTimeException e) {
- log.warn("{} is not a valid date for the configured formatting string", dateString, e);
- }
- } else {
- log.warn("Ignoring unsupported value type: {}", value.getClass().getName());
- }
- }
- return false;
+ super(attribute, formatString);
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), null,
+ net.shibboleth.profile.context.logic.DateAttributePredicate.class.getName());
}
}
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/DynamicAttributePredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/DynamicAttributePredicate.java
index abefa20dc..b9c822912 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/DynamicAttributePredicate.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/DynamicAttributePredicate.java
@@ -17,183 +17,21 @@
package net.shibboleth.idp.profile.logic;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.ListMultimap;
-
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.StringAttributeValue;
-import net.shibboleth.idp.attribute.context.AttributeContext;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
-import net.shibboleth.shared.annotation.constraint.NotEmpty;
-import net.shibboleth.shared.logic.Constraint;
-import net.shibboleth.shared.primitive.LoggerFactory;
-import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
/**
- * Predicate over an {@link AttributeContext} that derives the value(s) to match based
- * on one or more supplied Functions instead of static values.
- *
- * <p>Each function installed must return a value that matches a value of the attribute
- * corresponding to the map key.</p>
+ * Deprecated stub for relocated class.
*
- * <p>Functions may return a {@link String} or a {@link Collection} containing them.</p>
- *
- * @since 3.4.0
+ * @deprecated
*/
-public class DynamicAttributePredicate extends AbstractAttributePredicate {
-
- /** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(DynamicAttributePredicate.class);
+ at Deprecated(since="5.0.0", forRemoval=true)
+public class DynamicAttributePredicate extends net.shibboleth.profile.context.logic.DynamicAttributePredicate {
- /** Map of attribute IDs to functions. */
- @Nonnull @NonnullElements private ListMultimap<String,Function<ProfileRequestContext,Object>> attributeFunctionMap;
-
/** Constructor. */
public DynamicAttributePredicate() {
- attributeFunctionMap = ArrayListMultimap.create();
- }
-
- /**
- * Set the map of attribute/function pairs (as a map of function collections) to check for.
- *
- * @param map map of attribute/function pairs
- */
- public void setAttributeFunctionMap(
- @Nonnull @NonnullElements final Map<String,Collection<Function<ProfileRequestContext,Object>>> map) {
- Constraint.isNotNull(map, "Attribute/value map cannot be null");
-
- attributeFunctionMap.clear();
- for (final Map.Entry<String,Collection<Function<ProfileRequestContext,Object>>> entry : map.entrySet()) {
- final String attributeId = StringSupport.trimOrNull(entry.getKey());
- attributeFunctionMap.putAll(attributeId, List.copyOf(entry.getValue()));
- }
- }
-
- /** {@inheritDoc} */
- public boolean test(@Nullable final ProfileRequestContext input) {
-
- final AttributeContext attributeCtx = getAttributeContextLookupStrategy().apply(input);
- if (attributeCtx == null) {
- log.warn("No AttributeContext located for evaluation");
- return allowNullAttributeContext();
- }
-
- final Map<String,IdPAttribute> attributes = isUseUnfilteredAttributes()
- ? attributeCtx.getUnfilteredIdPAttributes()
- : attributeCtx.getIdPAttributes();
-
- if (hasMatch(input, attributes)) {
- log.debug("Context satisfied requirements");
- return true;
- }
- return false;
- }
-
- /** {@inheritDoc} */
- @Override
- protected boolean hasMatch(@Nonnull @NonnullElements final Map<String,IdPAttribute> attributeMap) {
- log.error("Method should never be called");
- return false;
- }
-
-// Checkstyle: CyclomaticComplexity OFF
- /**
- * Implementation of the condition to evaluate.
- *
- * @param profileRequestContext current profile request context
- * @param attributeMap the attributes to evaluate
- *
- * @return the condition result
- */
- protected boolean hasMatch(@Nullable final ProfileRequestContext profileRequestContext,
- @Nonnull @NonnullElements final Map<String,IdPAttribute> attributeMap) {
-
- for (final String id : attributeFunctionMap.keySet()) {
- log.debug("Checking for attribute: {}", id);
-
- final IdPAttribute attribute = attributeMap.get(id);
- if (attribute == null) {
- log.debug("Attribute {} not found in context", id);
- return false;
- }
-
- boolean matched = false;
-
- for (final Function<ProfileRequestContext,Object> fn : attributeFunctionMap.get(id)) {
-
- final Object candidate = fn.apply(profileRequestContext);
-
- if (candidate instanceof String) {
- matched = findMatch((String) candidate, attribute);
- } else if (candidate instanceof Collection<?>) {
- for (final Object subcandidate : (Collection<?>) candidate) {
- if (subcandidate instanceof String) {
- if (findMatch((String) subcandidate, attribute)) {
- matched = true;
- break;
- }
- } else {
- log.error(
- "Collection returned by function for attribute {} contained an unsupported type: {}",
- id, subcandidate.getClass().getName());
- }
- }
- } else {
- log.error("Function for attribute {} returned an unsupported type: {}", id,
- candidate.getClass().getName());
- }
-
- if (matched) {
- break;
- }
- }
-
- if (!matched) {
- log.debug("Attribute {} values not matched", id);
- return false;
- }
- }
-
- return true;
- }
-// Checkstyle: CyclomaticComplexity ON
-
- /**
- * Look for a matching value in an attribute.
- *
- * @param toMatch value to look for
- * @param attribute attribute to check
- *
- * @return true iff the value is one of the attribute's values
- */
- protected boolean findMatch(@Nonnull @NotEmpty final String toMatch, @Nonnull final IdPAttribute attribute) {
-
- if ("*".equals(toMatch)) {
- log.debug("Wildcard (*) value rule for attribute {}", attribute.getId());
- return true;
- }
- for (final IdPAttributeValue value : attribute.getValues()) {
- if (value instanceof StringAttributeValue) {
- if (toMatch.equals(((StringAttributeValue)value).getValue())) {
- log.debug("Found matching value ({}) in attribute {}", toMatch, attribute.getId());
- return true;
- }
- }
- }
-
- return false;
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), null,
+ net.shibboleth.profile.context.logic.DynamicAttributePredicate.class.getName());
}
-}
+}
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/LoopDetectionPredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/LoopDetectionPredicate.java
index 7fa4e5568..fe998b482 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/LoopDetectionPredicate.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/LoopDetectionPredicate.java
@@ -17,120 +17,21 @@
package net.shibboleth.idp.profile.logic;
-import java.util.Map;
-import java.util.function.Function;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.opensaml.core.metrics.MetricsSupport;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.slf4j.Logger;
-
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.MetricRegistry.MetricSupplier;
-import com.codahale.metrics.SlidingTimeWindowMovingAverages;
-
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
-import net.shibboleth.shared.annotation.constraint.Positive;
-import net.shibboleth.shared.collection.CollectionSupport;
-import net.shibboleth.shared.logic.Constraint;
-import net.shibboleth.shared.logic.FunctionSupport;
-import net.shibboleth.shared.primitive.LoggerFactory;
+import net.shibboleth.shared.primitive.DeprecationSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
/**
- * A condition that relies on a {@link Meter} to detect looping SPs.
- *
- * @since 4.1.0
+ * Deprecated stub for relocated class.
+ *
+ * @deprecated
*/
-public class LoopDetectionPredicate extends AbstractRelyingPartyPredicate {
-
- /** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(LoopDetectionPredicate.class);
-
- /** Count to trigger warning. */
- private long threshold;
-
- /** Map of RP names to meter names. */
- @Nonnull @NonnullElements private Map<String,String> relyingPartyMap;
-
- /** Lookup strategy to obtain subject name. */
- @Nonnull private Function<ProfileRequestContext,String> usernameLookupStrategy;
+ at Deprecated(since="5.0.0", forRemoval=true)
+public class LoopDetectionPredicate extends net.shibboleth.profile.context.logic.LoopDetectionPredicate {
/** Constructor. */
public LoopDetectionPredicate() {
- threshold = 20;
- relyingPartyMap = CollectionSupport.emptyMap();
- usernameLookupStrategy = FunctionSupport.constant(null);
- }
-
- /**
- * Set the warning threshold for the 1 minute moving average to exceed.
- *
- * <p>Defaults to 20.</p>
- *
- * @param value threshold to use
- */
- public void setThreshold(@Positive final long value) {
- threshold = Constraint.isGreaterThan(0, value, "Threshold must be positive");
- }
-
- /**
- * Set the map of relying party names to meter names to track counts.
- *
- * @param map map of RP/meter mappings
- */
- public void setRelyingPartyMap(@Nullable @NonnullElements final Map<String,String> map) {
- if (map != null) {
- relyingPartyMap = CollectionSupport.copyToMap(map);
- } else {
- relyingPartyMap = CollectionSupport.emptyMap();
- }
- }
-
- /**
- * Set lookup strategy to obtain username.
- *
- * @param strategy lookup strategy
- */
- public void setUsernameLookupStrategy(@Nonnull final Function<ProfileRequestContext,String> strategy) {
- usernameLookupStrategy = Constraint.isNotNull(strategy, "Username lookup strategy cannot be null");
- }
-
- /** {@inheritDoc} */
- public boolean test(@Nullable final ProfileRequestContext input) {
-
- final String username = usernameLookupStrategy.apply(input);
- final RelyingPartyContext rpCtx = getRelyingPartyContextLookupStrategy().apply(input);
-
- if (username != null && rpCtx != null && rpCtx.getRelyingPartyId() != null) {
- String meterName = relyingPartyMap.get(rpCtx.getRelyingPartyId());
- if (meterName != null) {
- meterName = MetricRegistry.name("net.shibboleth.idp.loopDetection", meterName,
- username.replace(".",""));
- final MetricRegistry registry = MetricsSupport.getMetricRegistry();
- if (registry == null) {
- log.error("MetricRegistry was unavailable");
- return false;
- }
- final Meter meter = registry.meter(meterName,
- new MetricSupplier<Meter>() {
- public Meter newMetric() {
- return new Meter(new SlidingTimeWindowMovingAverages());
- }
- });
- meter.mark();
- final double rate = meter.getOneMinuteRate();
- if (rate > threshold) {
- log.warn("Meter {} rate of {} exceeded threshold of {}", meterName, rate, threshold);
- return true;
- }
- }
- }
-
- return false;
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), null,
+ net.shibboleth.profile.context.logic.LoopDetectionPredicate.class.getName());
}
}
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/RegexAttributePredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/RegexAttributePredicate.java
index 3dcafebae..e7e20101f 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/RegexAttributePredicate.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/RegexAttributePredicate.java
@@ -17,111 +17,21 @@
package net.shibboleth.idp.profile.logic;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import net.shibboleth.shared.primitive.DeprecationSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.slf4j.Logger;
-
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.StringAttributeValue;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
-import net.shibboleth.shared.annotation.constraint.NotEmpty;
-import net.shibboleth.shared.logic.Constraint;
-import net.shibboleth.shared.primitive.LoggerFactory;
-import net.shibboleth.shared.primitive.StringSupport;
/**
- * Predicate that evaluates an {@link net.shibboleth.idp.attribute.context.AttributeContext} and checks
- * a specific attribute for value(s) that match a regular expression.
+ * Deprecated stub for relocated class.
*
- * <p>This handles only simple string-valued data.</p>
+ * @deprecated
*/
-public class RegexAttributePredicate extends AbstractAttributePredicate {
-
- /** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(RegexAttributePredicate.class);
-
- /** The attribute to evaluate. */
- @Nullable @NotEmpty private String attributeId;
-
- /** Regular expression. */
- @Nullable private Pattern pattern;
-
- /**
- * Get the attribute ID to check.
- *
- * @return the attribute ID to check
- */
- @Nullable @NotEmpty public String getAttributeId() {
- return attributeId;
- }
-
- /**
- * Set the attribute ID to check.
- *
- * @param id the attribute ID to check
- */
- public void setAttributeId(@Nonnull @NotEmpty final String id) {
- attributeId = Constraint.isNotNull(StringSupport.trimOrNull(id), "Attribute ID cannot be null or empty");
- }
-
- /**
- * Get the pattern to match the attribute values against.
- *
- * @return the pattern to match the attribute values against
- */
- @Nullable public Pattern getPattern() {
- return pattern;
- }
-
- /**
- * Set the pattern to match the attribute values against.
- *
- * @param p the pattern to match the attribute values against
- */
- public void setPattern(@Nonnull final Pattern p) {
- pattern = p;
- }
-
- /**
- * Set the pattern to match the attribute values against.
- *
- * @param s the pattern to match the attribute values against
- */
- public void setPattern(@Nonnull @NotEmpty final String s) {
- pattern = Pattern.compile(s);
- }
-
- /** {@inheritDoc} */
- @Override protected boolean hasMatch(@Nonnull @NonnullElements final Map<String, IdPAttribute> attributeMap) {
+ at Deprecated(since="5.0.0", forRemoval=true)
+public class RegexAttributePredicate extends net.shibboleth.profile.context.logic.RegexAttributePredicate {
- if (attributeId == null || pattern == null) {
- log.warn("Attribute ID or regular expression were not set");
- return false;
- }
-
- final IdPAttribute attribute = attributeMap.get(attributeId);
- if (attribute == null) {
- log.debug("Attribute '{}' not found in context", attributeId);
- return false;
- }
-
- for (final IdPAttributeValue value : attribute.getValues()) {
- if (value instanceof StringAttributeValue) {
- assert pattern != null;
- final Matcher m = pattern.matcher(((StringAttributeValue)value).getValue());
- if (m.matches()) {
- log.debug("Found matching value '{}' in attribute '{}'", m.group(), attributeId);
- return true;
- }
- }
- }
- log.debug("Attribute '{}' values not matched", attributeId);
- return false;
+ /** Constructor. */
+ public RegexAttributePredicate() {
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), null,
+ net.shibboleth.profile.context.logic.RegexAttributePredicate.class.getName());
}
-}
+}
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/ScriptedPredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/ScriptedPredicate.java
index 4b79e7df3..2fc525e26 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/ScriptedPredicate.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/ScriptedPredicate.java
@@ -23,22 +23,23 @@ import java.io.InputStream;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import javax.script.ScriptContext;
import javax.script.ScriptException;
-import org.opensaml.profile.context.ProfileRequestContext;
import org.springframework.core.io.Resource;
import net.shibboleth.shared.annotation.ParameterName;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
+import net.shibboleth.shared.primitive.DeprecationSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
import net.shibboleth.shared.scripting.EvaluableScript;
/**
- * A {@link java.util.function.Predicate} which calls out to a supplied script.
+ * Deprecated stub for relocated class.
+ *
+ * @deprecated
*/
- at SuppressWarnings("removal")
-public class ScriptedPredicate
- extends net.shibboleth.shared.logic.ScriptedPredicate<ProfileRequestContext> {
+ at Deprecated(since="5.0.0", forRemoval=true)
+public class ScriptedPredicate extends net.shibboleth.profile.context.logic.ScriptedPredicate {
/**
* Constructor.
@@ -49,7 +50,8 @@ public class ScriptedPredicate
public ScriptedPredicate(@Nonnull @NotEmpty @ParameterName(name="theScript") final EvaluableScript theScript,
@Nullable @NotEmpty @ParameterName(name="extraInfo") final String extraInfo) {
super(theScript, extraInfo);
- setInputType(ProfileRequestContext.class);
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), null,
+ net.shibboleth.profile.context.logic.ScriptedPredicate.class.getName());
}
/**
@@ -59,14 +61,8 @@ public class ScriptedPredicate
*/
public ScriptedPredicate(@Nonnull @NotEmpty @ParameterName(name="theScript") final EvaluableScript theScript) {
super(theScript);
- setInputType(ProfileRequestContext.class);
- }
-
- /** {@inheritDoc} */
- @Override
- protected void prepareContext(@Nonnull final ScriptContext scriptContext, @Nullable final Object... input) {
- super.prepareContext(scriptContext, input);
- scriptContext.setAttribute("profileContext", input != null ? input[0] : null, ScriptContext.ENGINE_SCOPE);
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), null,
+ net.shibboleth.profile.context.logic.ScriptedPredicate.class.getName());
}
/**
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/SimpleAttributePredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/SimpleAttributePredicate.java
index 825b6051b..3cadb0fa2 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/SimpleAttributePredicate.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/SimpleAttributePredicate.java
@@ -17,156 +17,21 @@
package net.shibboleth.idp.profile.logic;
-import java.util.Collection;
-import java.util.Map;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.slf4j.Logger;
-
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.ListMultimap;
-
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
-import net.shibboleth.idp.attribute.StringAttributeValue;
-import net.shibboleth.shared.annotation.constraint.NonnullElements;
-import net.shibboleth.shared.annotation.constraint.NotEmpty;
-import net.shibboleth.shared.logic.Constraint;
-import net.shibboleth.shared.primitive.LoggerFactory;
-import net.shibboleth.shared.primitive.StringSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
/**
- * Predicate that evaluates an {@link net.shibboleth.idp.attribute.context.AttributeContext} and checks
- * for particular attribute/value pairs.
- *
- * <p>A map to a collection of strings is used to represent the attribute(s) and value(s) to evaluate.
- * The values are evaluated as a disjunction (OR) and the attributes are evaluated as a conjunction (AND).</p>
- *
- * <p>This handles only simple string-valued data, or if scope is supplied, requires scoped values.</p>
+ * Deprecated stub for relocated class.
*
- * <p>For the special case of checking for an attribute's presence, regardless of values, the '*' value is
- * supported. Note that this does NOT exclude pathological cases such as empty or null values. A more
- * advanced predicate should be used to deal with such cases.</p>
+ * @deprecated
*/
-public class SimpleAttributePredicate extends AbstractAttributePredicate {
-
- /** Class logger. */
- @Nonnull private final Logger log = LoggerFactory.getLogger(SimpleAttributePredicate.class);
-
- /** Map of attribute IDs to values. */
- @Nonnull @NonnullElements private ListMultimap<String,String> attributeValueMap;
-
- /** Optional scope to check. */
- @Nullable @NotEmpty private String scope;
+ at Deprecated(since="5.0.0", forRemoval=true)
+public class SimpleAttributePredicate extends net.shibboleth.profile.context.logic.SimpleAttributePredicate {
/** Constructor. */
public SimpleAttributePredicate() {
- attributeValueMap = ArrayListMultimap.create();
- }
-
- /**
- * Set the map of attribute/value pairs (as a map of string collections) to check for.
- *
- * @param map map of attribute/value pairs
- */
- public void setAttributeValueMap(@Nonnull @NonnullElements final Map<String,Collection<String>> map) {
- Constraint.isNotNull(map, "Attribute/value map cannot be null");
-
- attributeValueMap.clear();
- for (final Map.Entry<String,Collection<String>> entry : map.entrySet()) {
- final String attributeId = StringSupport.trimOrNull(entry.getKey());
- attributeValueMap.putAll(attributeId, StringSupport.normalizeStringCollection(entry.getValue()));
- }
- }
-
- /**
- * Set a scope to check for.
- *
- * <p>If set, values that "match" must be scoped with this value. A "*" will match any scope, but
- * one must exist.</p>
- *
- * @param s scope to check for
- *
- * @since 4.2.0
- */
- public void setScope(@Nullable @NotEmpty final String s) {
- scope = StringSupport.trimOrNull(s);
- }
-
- /** {@inheritDoc} */
- @Override
- protected boolean allowNullAttributeContext() {
- return attributeValueMap.isEmpty() && scope == null;
- }
-
- /** {@inheritDoc} */
- @Override
- protected boolean hasMatch(final Map<String, IdPAttribute> attributeMap) {
- for (final String id : attributeValueMap.keySet()) {
- log.debug("Checking for attribute: {}", id);
-
- final IdPAttribute attribute = attributeMap.get(id);
- if (attribute == null) {
- log.debug("Attribute {} not found in context", id);
- return false;
- }
-
- boolean matched = false;
-
- for (final String value : attributeValueMap.get(id)) {
- if (findMatch(value, attribute)) {
- matched = true;
- break;
- }
- }
-
- if (!matched) {
- log.debug("Attribute {} values not matched", id);
- return false;
- }
- }
- return true;
- }
-
- /**
- * Look for a matching value in an attribute.
- *
- * @param toMatch value to look for
- * @param attribute attribute to check
- *
- * @return true iff the value is one of the attribute's values
- */
-// Checkstyle: CyclomaticComplexity OFF
- protected boolean findMatch(@Nonnull @NotEmpty final String toMatch, @Nonnull final IdPAttribute attribute) {
-
- if ("*".equals(toMatch) && scope == null) {
- log.debug("Wildcard (*) value rule for attribute {}", attribute.getId());
- return true;
- }
-
- for (final IdPAttributeValue value : attribute.getValues()) {
- if (scope != null && value instanceof ScopedStringAttributeValue) {
- final String scopeCopy = scope;
- if ("*".equals(toMatch) || toMatch.equals(((ScopedStringAttributeValue) value).getValue())) {
- if ("*".equals(scopeCopy) || scopeCopy.equals(((ScopedStringAttributeValue) value).getScope())) {
- log.debug("Found matching value ({}) and scope ({}) in attribute {}", toMatch, scopeCopy,
- attribute.getId());
- return true;
- }
- }
- } else if (scope == null && value instanceof StringAttributeValue) {
- if (toMatch.equals(((StringAttributeValue) value).getValue())) {
- log.debug("Found matching value ({}) in attribute {}", toMatch, attribute.getId());
- return true;
- }
- }
- }
-
- return false;
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), null,
+ net.shibboleth.profile.context.logic.SimpleAttributePredicate.class.getName());
}
-// Checkstyle: CyclomaticComplexity ON
}
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/SpringExpressionPredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/SpringExpressionPredicate.java
index 4ec918d15..ff25b41ff 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/SpringExpressionPredicate.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/SpringExpressionPredicate.java
@@ -18,21 +18,19 @@
package net.shibboleth.idp.profile.logic;
import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
import net.shibboleth.shared.annotation.ParameterName;
import net.shibboleth.shared.annotation.constraint.NotEmpty;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.springframework.expression.EvaluationContext;
+import net.shibboleth.shared.primitive.DeprecationSupport;
+import net.shibboleth.shared.primitive.DeprecationSupport.ObjectType;
/**
- * Predicate whose condition is defined by an Spring EL expression.
+ * Deprecated stub for relocated class.
*
- * @author Daniel Lutz
+ * @deprecated
*/
-public class SpringExpressionPredicate
- extends net.shibboleth.shared.spring.expression.SpringExpressionPredicate<ProfileRequestContext> {
+ at Deprecated(since="5.0.0", forRemoval=true)
+public class SpringExpressionPredicate extends net.shibboleth.profile.context.logic.SpringExpressionPredicate {
/**
* Constructor.
@@ -41,14 +39,8 @@ public class SpringExpressionPredicate
*/
public SpringExpressionPredicate(@Nonnull @NotEmpty @ParameterName(name="expression") final String expression) {
super(expression);
- setInputType(ProfileRequestContext.class);
- }
-
- /** {@inheritDoc} */
- @Override
- protected void prepareContext(@Nonnull final EvaluationContext context, @Nullable final Object... input) {
- super.prepareContext(context, input);
- context.setVariable("profileContext", input != null ? input[0] : input);
+ DeprecationSupport.warn(ObjectType.CLASS, getClass().getName(), null,
+ net.shibboleth.profile.context.logic.SpringExpressionPredicate.class.getName());
}
}
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/VerifiedProfilePredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/VerifiedProfilePredicate.java
deleted file mode 100644
index 11ac5d61a..000000000
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/VerifiedProfilePredicate.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * 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.profile.logic;
-
-import javax.annotation.Nullable;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-
-import net.shibboleth.profile.context.RelyingPartyContext;
-
-/**
- * Predicate to determine whether a profile request is from a verified source.
- */
-public class VerifiedProfilePredicate extends AbstractRelyingPartyPredicate {
-
- /** {@inheritDoc} */
- public boolean test(@Nullable final ProfileRequestContext input) {
- if (input != null) {
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
- if (rpc != null) {
- return rpc.isVerified();
- }
- }
-
- return true;
- }
-
-}
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/messaging/AbstractRelyingPartyPredicate.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/messaging/AbstractRelyingPartyPredicate.java
deleted file mode 100644
index eda0d0b08..000000000
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/messaging/AbstractRelyingPartyPredicate.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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.profile.logic.messaging;
-
-import java.util.function.Function;
-import java.util.function.Predicate;
-
-import javax.annotation.Nonnull;
-
-import org.opensaml.messaging.context.InOutOperationContext;
-import org.opensaml.messaging.context.MessageContext;
-import org.opensaml.messaging.context.navigate.ChildContextLookup;
-import org.opensaml.messaging.context.navigate.RecursiveTypedParentContextLookup;
-
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.shared.logic.Constraint;
-
-/**
- * Abstract base class for a predicate that evaluates a {@link MessageContext}
- * and which requires a {@link RelyingPartyContext} obtained via a lookup function,
- * by default a child of the {@link InOutOperationContext}
- * the parent of the specified {@link MessageContext}.
- */
-public abstract class AbstractRelyingPartyPredicate implements Predicate<MessageContext> {
-
- /**
- * Strategy used to locate the {@link RelyingPartyContext} associated with a given {@link MessageContext}.
- */
- @Nonnull private Function<MessageContext,RelyingPartyContext> relyingPartyContextLookupStrategy;
-
- /** Constructor. */
- public AbstractRelyingPartyPredicate() {
- relyingPartyContextLookupStrategy =
- new ChildContextLookup<>(RelyingPartyContext.class).compose(
- new RecursiveTypedParentContextLookup<>(InOutOperationContext.class));
- }
-
- /**
- * Set the strategy used to locate the {@link RelyingPartyContext} associated with a given
- * {@link MessageContext}.
- *
- * @param strategy lookup strategy
- */
- public void setRelyingPartyContextLookupStrategy(
- @Nonnull final Function<MessageContext,RelyingPartyContext> strategy) {
- relyingPartyContextLookupStrategy =
- Constraint.isNotNull(strategy, "RelyingPartyContext lookup strategy cannot be null");
- }
-
- /**
- * Get the strategy used to locate the {@link RelyingPartyContext} associated with a given
- * {@link MessageContext}.
- *
- * @return lookup strategy
- */
- @Nonnull public Function<MessageContext,RelyingPartyContext> getRelyingPartyContextLookupStrategy() {
- return relyingPartyContextLookupStrategy;
- }
-
-}
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/messaging/package-info.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/messaging/package-info.java
deleted file mode 100644
index ba5ee8e0b..000000000
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/messaging/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * 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.
- */
-
-/**
- * Predicates for IdP-specific messaging profiles.
- */
-
-package net.shibboleth.idp.profile.logic.messaging;
\ No newline at end of file
diff --git a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/package-info.java b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/package-info.java
index fc3f52cff..dfc734e9c 100644
--- a/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/package-info.java
+++ b/idp-profile-api/src/main/java/net/shibboleth/idp/profile/logic/package-info.java
@@ -16,7 +16,7 @@
*/
/**
- * Functions and predicates supporting other profile components.
+ * This is a legacy package and will be removed in V6.
*/
package net.shibboleth.idp.profile.logic;
\ No newline at end of file
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/DateAttributePredicateTest.java b/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/DateAttributePredicateTest.java
deleted file mode 100644
index 6b424e3dd..000000000
--- a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/DateAttributePredicateTest.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * 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.profile.logic;
-
-import net.shibboleth.idp.attribute.DateTimeAttributeValue;
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.StringAttributeValue;
-import net.shibboleth.idp.attribute.context.AttributeContext;
-import net.shibboleth.profile.context.RelyingPartyContext;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import java.time.Instant;
-import java.time.ZonedDateTime;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import static org.testng.Assert.*;
-
-/**
- * Unit test for {@link DateAttributePredicate}.
- */
-public class DateAttributePredicateTest {
-
- private final java.time.format.DateTimeFormatter javaformatter =
- java.time.format.DateTimeFormatter.ISO_ZONED_DATE_TIME;
-
- @DataProvider(name = "test-data-java")
- public Object[][] provideTestDataJava() {
- return new Object[][] {
- // Future date matches
- new Object[] {
- new DateAttributePredicate("expirationDate", javaformatter),
- "expirationDate",
- javaDateStrings(java.time.Duration.ofDays(1)),
- true,
- },
- // Current date does not match
- new Object[] {
- new DateAttributePredicate("expirationDate", javaformatter),
- "expirationDate",
- javaDateStrings(java.time.Duration.ZERO),
- false,
- },
- // Past date does not match
- new Object[] {
- new DateAttributePredicate("expirationDate", javaformatter),
- "expirationDate",
- javaDateStrings(java.time.Duration.ofDays(-1)),
- false,
- },
- // Increase target date by 90 days
- new Object[] {
- newJavaPredicate("expirationDate", java.time.Duration.ofDays(90)),
- "expirationDate",
- javaDateStrings(java.time.Duration.ofDays(91)),
- true,
- },
- // Decrease target date by 30 days
- // e.g. expiration warning case
- new Object[] {
- newJavaPredicate("expirationDate", java.time.Duration.ofDays(-30)),
- "expirationDate",
- javaDateStrings(java.time.Duration.ofDays(29)),
- false,
- },
- };
- }
-
-
- @Test(dataProvider = "test-data-java")
- public void testJavaTime(
- final DateAttributePredicate predicate,
- final String attribute,
- final String[] values,
- final boolean expected) throws Exception {
- assertEquals(predicate.test(createProfileRequestContext(attribute, values, null)), expected);
- }
-
- @Test
- public void testDateTimeValues() {
- final DateAttributePredicate predicate = new DateAttributePredicate("test");
-
- assertTrue(predicate.test(createProfileRequestContext("test", null,
- new Instant[] {Instant.now().plus(java.time.Duration.ofMinutes(5))})));
-
- predicate.setOffset(java.time.Duration.ofMinutes(-10));
-
- assertFalse(predicate.test(createProfileRequestContext("test", null,
- new Instant[] {Instant.now().plus(java.time.Duration.ofMinutes(5))})));
- }
-
-
- private ProfileRequestContext createProfileRequestContext(final String name, final String[] values, final Instant[] dtvalues) {
- final ProfileRequestContext prc = new ProfileRequestContext();
- final RelyingPartyContext rpc = new RelyingPartyContext();
- final IdPAttribute attribute = new IdPAttribute(name);
- final List<IdPAttributeValue> attributeValues = new ArrayList<>();
- if (values != null) {
- for (String value : values) {
- attributeValues.add(new StringAttributeValue(value));
- }
- }
- if (dtvalues != null) {
- for (Instant value : dtvalues) {
- attributeValues.add(new DateTimeAttributeValue(value));
- }
- }
- attribute.setValues(attributeValues);
- final AttributeContext ac = new AttributeContext();
- ac.setIdPAttributes(Collections.singletonList(attribute));
- ac.setUnfilteredIdPAttributes(Collections.singletonList(attribute));
- rpc.addSubcontext(ac);
- prc.addSubcontext(rpc);
- return prc;
- }
-
- /**
- * Produces an array of date strings that are offsets from current system time.
- *
- * @param offsets One or more durations that are added to the current system time.
- *
- * @return Array of date strings, one for each provided offset.
- */
- private String[] javaDateStrings(final java.time.Duration ... offsets) {
- final String[] dates = new String[offsets.length];
- for (int i = 0; i < offsets.length; i++) {
- dates[i] = javaformatter.format(ZonedDateTime.now().plus(offsets[i]));
- }
- return dates;
- }
-
- private DateAttributePredicate newJavaPredicate(final String attribute, final java.time.Duration offset) {
- final DateAttributePredicate p = new DateAttributePredicate(attribute, javaformatter);
- p.setOffset(offset);
- return p;
- }
-
-}
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/DynamicAttributePredicateTest.java b/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/DynamicAttributePredicateTest.java
deleted file mode 100644
index 3dc7e939c..000000000
--- a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/DynamicAttributePredicateTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * 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.profile.logic;
-
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
-import net.shibboleth.idp.attribute.StringAttributeValue;
-import net.shibboleth.idp.attribute.context.AttributeContext;
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.shared.logic.FunctionSupport;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.testng.annotations.Test;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static org.testng.Assert.*;
-
-/**
- * Unit test for {@link DynamicAttributePredicate}.
- */
- at SuppressWarnings("javadoc")
-public class DynamicAttributePredicateTest {
-
- @Test
- public void testInvalid() {
- final ProfileRequestContext prc = createProfileRequestContext("foo", List.of("bar", "baz"));
- DynamicAttributePredicate predicate = new DynamicAttributePredicate();
-
- predicate.setAttributeFunctionMap(Map.of("foo", Collections.singleton(FunctionSupport.constant(List.of(10)))));
- assertFalse(predicate.test(prc));
-
- predicate.setAttributeFunctionMap(Map.of("foo", Collections.singleton(FunctionSupport.constant(10))));
- assertFalse(predicate.test(prc));
- }
-
- @Test
- public void testString() {
- final ProfileRequestContext prc = createProfileRequestContext("foo", List.of("bar", "baz"));
- DynamicAttributePredicate predicate = new DynamicAttributePredicate();
-
- predicate.setAttributeFunctionMap(Map.of("foo2", Collections.singleton(FunctionSupport.constant(List.of("bar")))));
- assertFalse(predicate.test(prc));
-
- predicate.setAttributeFunctionMap(Map.of("foo2", Collections.singleton(FunctionSupport.constant("bar"))));
- assertFalse(predicate.test(prc));
-
- predicate.setAttributeFunctionMap(Map.of("foo2", Collections.singleton(FunctionSupport.constant("*"))));
- assertFalse(predicate.test(prc));
-
- predicate.setAttributeFunctionMap(Map.of("foo", Collections.singleton(FunctionSupport.constant("*"))));
- assertTrue(predicate.test(prc));
-
- predicate.setAttributeFunctionMap(Map.of("foo", Collections.singleton(FunctionSupport.constant(List.of("bar", "baz")))));
- assertTrue(predicate.test(prc));
- }
-
- private ProfileRequestContext createProfileRequestContext(final String name, final Collection<String> values) {
- final ProfileRequestContext prc = new ProfileRequestContext();
- final RelyingPartyContext rpc = new RelyingPartyContext();
- final IdPAttribute attribute = new IdPAttribute(name);
- final List<IdPAttributeValue> attributeValues = new ArrayList<>();
- for (final String value : values) {
- final int i = value.indexOf('@');
- if (i == -1) {
- attributeValues.add(new StringAttributeValue(value));
- } else {
- attributeValues.add(new ScopedStringAttributeValue(value.substring(0,i), value.substring(i + 1)));
- }
- }
- attribute.setValues(attributeValues);
- final AttributeContext ac = new AttributeContext();
- ac.setIdPAttributes(Collections.singletonList(attribute));
- ac.setUnfilteredIdPAttributes(Collections.singletonList(attribute));
- rpc.addSubcontext(ac);
- prc.addSubcontext(rpc);
- return prc;
- }
-
-}
\ No newline at end of file
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/LoopDetectionPredicateTest.java b/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/LoopDetectionPredicateTest.java
deleted file mode 100644
index da22e035c..000000000
--- a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/LoopDetectionPredicateTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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.profile.logic;
-
-import java.util.Map;
-
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.shared.logic.FunctionSupport;
-
-import org.opensaml.core.testing.OpenSAMLInitBaseTestCase;
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-/** Unit test for {@link LoopDetectionPredicate}. */
- at SuppressWarnings("javadoc")
-public class LoopDetectionPredicateTest extends OpenSAMLInitBaseTestCase {
-
- private ProfileRequestContext prc;
- private RelyingPartyContext rpCtx;
- private LoopDetectionPredicate pred;
-
- @BeforeMethod
- public void setUp() {
- prc = new ProfileRequestContext();
- rpCtx = prc.getOrCreateSubcontext(RelyingPartyContext.class);
- pred = new LoopDetectionPredicate();
- pred.setUsernameLookupStrategy(FunctionSupport.constant("jdoe.1"));
- }
-
- @Test
- public void testNoMap() {
- Assert.assertFalse(pred.test(prc));
-
- rpCtx.setRelyingPartyId("foo");
- Assert.assertFalse(pred.test(prc));
- }
-
- @Test
- public void testNoMatch() {
- pred.setRelyingPartyMap(Map.of("bar", "bar"));
-
- rpCtx.setRelyingPartyId("foo");
- Assert.assertFalse(pred.test(prc));
- }
-
- @Test
- public void testMatch() {
- pred.setRelyingPartyMap(Map.of("foo", "foo"));
-
- rpCtx.setRelyingPartyId("foo");
- Assert.assertFalse(pred.test(prc));
- }
-
- @Test
- public void testExceed() throws InterruptedException {
- pred.setRelyingPartyMap(Map.of("bar", "bar"));
-
- rpCtx.setRelyingPartyId("bar");
- for (int i=0; i<20; ++i) {
- Assert.assertFalse(pred.test(prc));
- }
- Assert.assertTrue(pred.test(prc));
- }
-
-}
\ No newline at end of file
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/ScriptedPredicateTest.java b/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/ScriptedPredicateTest.java
deleted file mode 100644
index e944a6cb1..000000000
--- a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/ScriptedPredicateTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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.profile.logic;
-
-import javax.script.ScriptException;
-
-import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.shared.spring.custom.SchemaTypeAwareXMLBeanDefinitionReader;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.springframework.context.support.GenericApplicationContext;
-import org.springframework.core.io.ClassPathResource;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * Tests for {@link ScriptedPredicate}.
- */
- at SuppressWarnings("javadoc")
-public class ScriptedPredicateTest {
-
- private ProfileRequestContext withChild;
-
- private ProfileRequestContext noChild;
-
- @BeforeClass public void setup() {
- withChild = new ProfileRequestContext();
- withChild.getOrCreateSubcontext(RelyingPartyContext.class);
- noChild = new ProfileRequestContext();
- }
-
- @Test public void simple() throws ScriptException {
- ScriptedPredicate test = ScriptedPredicate.inlineScript("new java.lang.Boolean(true);");
- Assert.assertTrue(test.test(withChild));
-
- test = ScriptedPredicate.inlineScript("true");
- Assert.assertTrue(test.test(withChild));
-
- test = ScriptedPredicate.inlineScript("false");
- Assert.assertFalse(test.test(withChild));
-
- test = ScriptedPredicate.inlineScript("\"thirty\"");
- Assert.assertFalse(test.test(withChild));
- }
-
- @Test public void custom() throws ScriptException {
- ScriptedPredicate test = ScriptedPredicate.inlineScript("custom;");
- test.setCustomObject(Boolean.valueOf(true));
- Assert.assertTrue(test.test(withChild));
-
- test.setCustomObject(Boolean.valueOf(false));
- Assert.assertFalse(test.test(withChild));
-
- }
- @Test public void inlineBean() throws ScriptException {
-
- try (final GenericApplicationContext ctx = new GenericApplicationContext()) {
- final SchemaTypeAwareXMLBeanDefinitionReader beanDefinitionReader =
- new SchemaTypeAwareXMLBeanDefinitionReader(ctx);
-
- beanDefinitionReader.loadBeanDefinitions(new ClassPathResource(
- "/net/shibboleth/idp/profile/logic/inlineBean.xml"));
-
- ctx.refresh();
- final ScriptedPredicate rule = ctx.getBean(ScriptedPredicate.class);
-
- Assert.assertTrue(rule.test(withChild));
-
- Assert.assertFalse(rule.test(noChild));
- }
- }
-
- @Test public void resourceBean() throws ScriptException {
-
- try (final GenericApplicationContext ctx = new GenericApplicationContext()) {
- final SchemaTypeAwareXMLBeanDefinitionReader beanDefinitionReader =
- new SchemaTypeAwareXMLBeanDefinitionReader(ctx);
-
- beanDefinitionReader.loadBeanDefinitions(new ClassPathResource(
- "/net/shibboleth/idp/profile/logic/resourceBean.xml"));
-
- ctx.refresh();
- final ScriptedPredicate rule = ctx.getBean(ScriptedPredicate.class);
-
- Assert.assertTrue(rule.test(withChild));
-
- Assert.assertFalse(rule.test(noChild));
- }
- }
-
-}
diff --git a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/SimpleAttributePredicateTest.java b/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/SimpleAttributePredicateTest.java
deleted file mode 100644
index d68ca010e..000000000
--- a/idp-profile-api/src/test/java/net/shibboleth/idp/profile/logic/SimpleAttributePredicateTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * 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.profile.logic;
-
-import net.shibboleth.idp.attribute.IdPAttribute;
-import net.shibboleth.idp.attribute.IdPAttributeValue;
-import net.shibboleth.idp.attribute.ScopedStringAttributeValue;
-import net.shibboleth.idp.attribute.StringAttributeValue;
-import net.shibboleth.idp.attribute.context.AttributeContext;
-import net.shibboleth.profile.context.RelyingPartyContext;
-
-import org.opensaml.profile.context.ProfileRequestContext;
-import org.testng.annotations.Test;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import static org.testng.Assert.*;
-
-/**
- * Unit test for {@link SimpleAttributePredicate}.
- */
- at SuppressWarnings("javadoc")
-public class SimpleAttributePredicateTest {
-
- @Test
- public void testString() {
- final ProfileRequestContext prc = createProfileRequestContext("foo", List.of("bar", "baz"));
- SimpleAttributePredicate predicate = new SimpleAttributePredicate();
-
- predicate.setAttributeValueMap(Map.of("foo2", List.of("bar")));
- assertFalse(predicate.test(prc));
-
- predicate.setAttributeValueMap(Map.of("foo2", List.of("*")));
- assertFalse(predicate.test(prc));
-
- predicate.setAttributeValueMap(Map.of("foo", List.of("*")));
- assertTrue(predicate.test(prc));
-
- predicate.setAttributeValueMap(Map.of("foo", List.of("bar", "baz")));
- assertTrue(predicate.test(prc));
-
- predicate.setScope("zorkmid");
- assertFalse(predicate.test(prc));
- }
-
- @Test
- public void testScoped() {
- final ProfileRequestContext prc = createProfileRequestContext("foo", List.of("bar at scope1", "baz at scope2"));
- SimpleAttributePredicate predicate = new SimpleAttributePredicate();
-
- predicate.setAttributeValueMap(Map.of("foo", List.of("bar")));
- assertTrue(predicate.test(prc));
-
- predicate.setAttributeValueMap(Map.of("foo", List.of("*")));
- assertTrue(predicate.test(prc));
-
- predicate.setScope("zorkmid");
- assertFalse(predicate.test(prc));
-
- predicate.setScope("*");
- assertTrue(predicate.test(prc));
-
- predicate.setAttributeValueMap(Map.of("foo", List.of("bar", "baz")));
- assertTrue(predicate.test(prc));
-
- predicate.setScope("scope1");
- assertTrue(predicate.test(prc));
-
- predicate.setScope("scope2");
- assertTrue(predicate.test(prc));
-
- predicate.setAttributeValueMap(Map.of("foo", List.of("bar")));
- assertFalse(predicate.test(prc));
- }
-
- private ProfileRequestContext createProfileRequestContext(final String name, final Collection<String> values) {
- final ProfileRequestContext prc = new ProfileRequestContext();
- final RelyingPartyContext rpc = new RelyingPartyContext();
- final IdPAttribute attribute = new IdPAttribute(name);
- final List<IdPAttributeValue> attributeValues = new ArrayList<>();
- for (final String value : values) {
- final int i = value.indexOf('@');
- if (i == -1) {
- attributeValues.add(new StringAttributeValue(value));
- } else {
- attributeValues.add(new ScopedStringAttributeValue(value.substring(0,i), value.substring(i + 1)));
- }
- }
- attribute.setValues(attributeValues);
- final AttributeContext ac = new AttributeContext();
- ac.setIdPAttributes(Collections.singletonList(attribute));
- ac.setUnfilteredIdPAttributes(Collections.singletonList(attribute));
- rpc.addSubcontext(ac);
- prc.addSubcontext(rpc);
- return prc;
- }
-
-}
\ No newline at end of file
diff --git a/idp-profile-api/src/test/resources/net/shibboleth/idp/profile/logic/inlineBean.xml b/idp-profile-api/src/test/resources/net/shibboleth/idp/profile/logic/inlineBean.xml
deleted file mode 100644
index d2269a107..000000000
--- a/idp-profile-api/src/test/resources/net/shibboleth/idp/profile/logic/inlineBean.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p"
- xmlns:c="http://www.springframework.org/schema/c" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
-
- <bean id="testBean" class="net.shibboleth.idp.profile.logic.ScriptedPredicate"
- factory-method="inlineScript">
- <constructor-arg>
- <value>
-<![CDATA[
- value = true;
- if (null == profileContext.getSubcontext("net.shibboleth.profile.context.RelyingPartyContext")) {
- value = false;
- }
- value;
-]]>
- </value>
- </constructor-arg>
- </bean>
-</beans>
\ No newline at end of file
diff --git a/idp-profile-api/src/test/resources/net/shibboleth/idp/profile/logic/resourceBean.xml b/idp-profile-api/src/test/resources/net/shibboleth/idp/profile/logic/resourceBean.xml
deleted file mode 100644
index a314750bd..000000000
--- a/idp-profile-api/src/test/resources/net/shibboleth/idp/profile/logic/resourceBean.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:util="http://www.springframework.org/schema/util" xmlns:p="http://www.springframework.org/schema/p"
- xmlns:c="http://www.springframework.org/schema/c" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"
-
- default-init-method="initialize">
-
- <bean id="testBean" class="net.shibboleth.idp.profile.logic.ScriptedPredicate"
- factory-method="resourceScript" c:resource="classpath:/net/shibboleth/idp/profile/logic/script.js"/>
-</beans>
\ No newline at end of file
diff --git a/idp-profile-api/src/test/resources/net/shibboleth/idp/profile/logic/script.js b/idp-profile-api/src/test/resources/net/shibboleth/idp/profile/logic/script.js
deleted file mode 100644
index 4da3293b1..000000000
--- a/idp-profile-api/src/test/resources/net/shibboleth/idp/profile/logic/script.js
+++ /dev/null
@@ -1,5 +0,0 @@
-value = true;
-if (null == profileContext.getSubcontext("net.shibboleth.profile.context.RelyingPartyContext")) {
- value = false;
-}
-value;
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/IncludeAttributeStatementPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/IncludeAttributeStatementPredicate.java
index 156616baa..431297ebc 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/IncludeAttributeStatementPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/IncludeAttributeStatementPredicate.java
@@ -24,7 +24,7 @@ import javax.annotation.Nullable;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
import net.shibboleth.shared.logic.Constraint;
import org.opensaml.messaging.context.navigate.ChildContextLookup;
@@ -71,7 +71,7 @@ public class IncludeAttributeStatementPredicate extends AbstractRelyingPartyPred
return true;
}
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final ProfileConfiguration pc = rpc.getProfileConfig();
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/NotBeforeProfileConfigPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/NotBeforeProfileConfigPredicate.java
index 23f4ca31c..d17fa79dc 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/NotBeforeProfileConfigPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/NotBeforeProfileConfigPredicate.java
@@ -21,7 +21,7 @@ import javax.annotation.Nullable;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.profile.config.SAMLProfileConfiguration;
import org.opensaml.profile.context.ProfileRequestContext;
@@ -37,7 +37,7 @@ public class NotBeforeProfileConfigPredicate extends AbstractRelyingPartyPredica
/** {@inheritDoc} */
public boolean test(@Nullable final ProfileRequestContext input) {
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final ProfileConfiguration pc = rpc.getProfileConfig();
if (pc != null && pc instanceof SAMLProfileConfiguration) {
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignAssertionsPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignAssertionsPredicate.java
index a86480cf8..27799e568 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignAssertionsPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignAssertionsPredicate.java
@@ -29,7 +29,7 @@ import org.opensaml.saml.saml2.metadata.SPSSODescriptor;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.profile.config.SAMLProfileConfiguration;
import net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
import net.shibboleth.shared.logic.Constraint;
@@ -87,7 +87,7 @@ public class SignAssertionsPredicate extends AbstractRelyingPartyPredicate {
}
}
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final ProfileConfiguration pc = rpc.getProfileConfig();
if (pc instanceof SAMLProfileConfiguration) {
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignRequestsPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignRequestsPredicate.java
index 10999fd41..5d55e3401 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignRequestsPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignRequestsPredicate.java
@@ -24,7 +24,7 @@ import javax.annotation.Nullable;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.profile.config.SAMLProfileConfiguration;
import net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
import net.shibboleth.shared.logic.Constraint;
@@ -94,7 +94,7 @@ public class SignRequestsPredicate extends AbstractRelyingPartyPredicate {
}
}
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final ProfileConfiguration pc = rpc.getProfileConfig();
if (pc != null && pc instanceof SAMLProfileConfiguration) {
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignResponsesPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignResponsesPredicate.java
index 2e470f401..c8e1cb234 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignResponsesPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/SignResponsesPredicate.java
@@ -21,7 +21,7 @@ import javax.annotation.Nullable;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.profile.config.SAMLProfileConfiguration;
import org.opensaml.profile.context.ProfileRequestContext;
@@ -32,7 +32,7 @@ public class SignResponsesPredicate extends AbstractRelyingPartyPredicate {
/** {@inheritDoc} */
public boolean test(@Nullable final ProfileRequestContext input) {
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final ProfileConfiguration pc = rpc.getProfileConfig();
if (pc instanceof SAMLProfileConfiguration) {
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/ClientTLSArtifactRequestsPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/ClientTLSArtifactRequestsPredicate.java
index 48d61e015..a5244c288 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/ClientTLSArtifactRequestsPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/ClientTLSArtifactRequestsPredicate.java
@@ -23,7 +23,7 @@ import org.opensaml.messaging.context.MessageContext;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.messaging.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.messaging.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.profile.config.SAMLArtifactConsumerProfileConfiguration;
/** A predicate implementation that forwards to
@@ -32,7 +32,7 @@ public class ClientTLSArtifactRequestsPredicate extends AbstractRelyingPartyPred
/** {@inheritDoc} */
public boolean test(@Nullable final MessageContext input) {
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final ProfileConfiguration pc = rpc.getProfileConfig();
if (pc != null && pc instanceof SAMLArtifactConsumerProfileConfiguration) {
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/ClientTLSSOAPLogoutRequestsPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/ClientTLSSOAPLogoutRequestsPredicate.java
index 8a294082a..dff7c30c8 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/ClientTLSSOAPLogoutRequestsPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/ClientTLSSOAPLogoutRequestsPredicate.java
@@ -23,7 +23,7 @@ import org.opensaml.messaging.context.MessageContext;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.messaging.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.messaging.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.saml2.profile.config.SingleLogoutProfileConfiguration;
/** A predicate implementation that forwards to
@@ -32,7 +32,7 @@ public class ClientTLSSOAPLogoutRequestsPredicate extends AbstractRelyingPartyPr
/** {@inheritDoc} */
public boolean test(@Nullable final MessageContext input) {
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final ProfileConfiguration pc = rpc.getProfileConfig();
if (pc != null && pc instanceof SingleLogoutProfileConfiguration) {
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/SignArtifactRequestsPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/SignArtifactRequestsPredicate.java
index 7cf968d86..ac85ce816 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/SignArtifactRequestsPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/SignArtifactRequestsPredicate.java
@@ -23,7 +23,7 @@ import org.opensaml.messaging.context.MessageContext;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.messaging.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.messaging.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.profile.config.SAMLArtifactConsumerProfileConfiguration;
/** A predicate implementation that forwards to
@@ -32,7 +32,7 @@ public class SignArtifactRequestsPredicate extends AbstractRelyingPartyPredicate
/** {@inheritDoc} */
public boolean test(@Nullable final MessageContext input) {
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final ProfileConfiguration pc = rpc.getProfileConfig();
if (pc != null && pc instanceof SAMLArtifactConsumerProfileConfiguration) {
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/SignSOAPLogoutRequestsPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/SignSOAPLogoutRequestsPredicate.java
index a9a00abb5..25ff2a7de 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/SignSOAPLogoutRequestsPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/profile/config/logic/messaging/SignSOAPLogoutRequestsPredicate.java
@@ -23,7 +23,7 @@ import org.opensaml.messaging.context.MessageContext;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.messaging.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.messaging.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.saml2.profile.config.SingleLogoutProfileConfiguration;
/** A predicate implementation that forwards to
@@ -32,7 +32,7 @@ public class SignSOAPLogoutRequestsPredicate extends AbstractRelyingPartyPredica
/** {@inheritDoc} */
public boolean test(@Nullable final MessageContext input) {
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final ProfileConfiguration pc = rpc.getProfileConfig();
if (pc != null && pc instanceof SingleLogoutProfileConfiguration) {
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/CheckAddressPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/CheckAddressPredicate.java
index 7b58017ce..042593796 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/CheckAddressPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/CheckAddressPredicate.java
@@ -21,7 +21,7 @@ import javax.annotation.Nullable;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.saml2.profile.config.BrowserSSOProfileConfiguration;
import org.opensaml.profile.context.ProfileRequestContext;
@@ -39,7 +39,7 @@ public class CheckAddressPredicate extends AbstractRelyingPartyPredicate {
/** {@inheritDoc} */
public boolean test(@Nullable final ProfileRequestContext input) {
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final ProfileConfiguration pc = rpc.getProfileConfig();
if (pc instanceof BrowserSSOProfileConfiguration) {
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/IgnoreRequestSignaturesPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/IgnoreRequestSignaturesPredicate.java
index af2c2247f..f4d9d6296 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/IgnoreRequestSignaturesPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/IgnoreRequestSignaturesPredicate.java
@@ -24,7 +24,7 @@ import org.opensaml.profile.context.ProfileRequestContext;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.saml2.profile.config.SAML2ProfileConfiguration;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -39,7 +39,7 @@ public class IgnoreRequestSignaturesPredicate extends AbstractRelyingPartyPredic
/** {@inheritDoc} */
public boolean test(@Nullable final ProfileRequestContext input) {
- final RelyingPartyContext rpCtx = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpCtx = getRelyingPartyContext(input);
if (input == null || rpCtx == null) {
log.debug("No RelyingPartyContext found, assuming signatures should be checked");
return false;
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/IgnoreScopingProfileConfigPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/IgnoreScopingProfileConfigPredicate.java
index dd5710c48..ea332a0d9 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/IgnoreScopingProfileConfigPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/IgnoreScopingProfileConfigPredicate.java
@@ -21,7 +21,7 @@ import javax.annotation.Nullable;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.saml2.profile.config.BrowserSSOProfileConfiguration;
import org.opensaml.profile.context.ProfileRequestContext;
@@ -39,7 +39,7 @@ public class IgnoreScopingProfileConfigPredicate extends AbstractRelyingPartyPre
/** {@inheritDoc} */
public boolean test(@Nullable final ProfileRequestContext input) {
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final ProfileConfiguration pc = rpc.getProfileConfig();
if (pc instanceof BrowserSSOProfileConfiguration) {
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/SOAPErrorPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/SOAPErrorPredicate.java
index 417bb23ca..909bcd994 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/SOAPErrorPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/SOAPErrorPredicate.java
@@ -28,7 +28,7 @@ import org.opensaml.profile.context.navigate.CurrentOrPreviousEventLookup;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.saml2.profile.config.ECPProfileConfiguration;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.primitive.LoggerFactory;
@@ -68,7 +68,7 @@ public class SOAPErrorPredicate extends AbstractRelyingPartyPredicate {
/** {@inheritDoc} */
public boolean test(@Nullable final ProfileRequestContext input) {
- final RelyingPartyContext rpCtx = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpCtx = getRelyingPartyContext(input);
if (rpCtx == null) {
log.debug("No RelyingPartyContext found, assuming error handled with SOAP fault");
return true;
diff --git a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/SuppressAuthenticatingAuthorityPredicate.java b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/SuppressAuthenticatingAuthorityPredicate.java
index 20aa13e06..ff66bc65d 100644
--- a/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/SuppressAuthenticatingAuthorityPredicate.java
+++ b/idp-saml-api/src/main/java/net/shibboleth/idp/saml/saml2/profile/config/logic/SuppressAuthenticatingAuthorityPredicate.java
@@ -21,7 +21,7 @@ import javax.annotation.Nullable;
import net.shibboleth.profile.config.ProfileConfiguration;
import net.shibboleth.profile.context.RelyingPartyContext;
-import net.shibboleth.idp.profile.logic.AbstractRelyingPartyPredicate;
+import net.shibboleth.profile.context.logic.AbstractRelyingPartyPredicate;
import net.shibboleth.idp.saml.saml2.profile.config.BrowserSSOProfileConfiguration;
import org.opensaml.profile.context.ProfileRequestContext;
@@ -39,7 +39,7 @@ public class SuppressAuthenticatingAuthorityPredicate extends AbstractRelyingPar
/** {@inheritDoc} */
public boolean test(@Nullable final ProfileRequestContext input) {
- final RelyingPartyContext rpc = getRelyingPartyContextLookupStrategy().apply(input);
+ final RelyingPartyContext rpc = getRelyingPartyContext(input);
if (rpc != null) {
final ProfileConfiguration pc = rpc.getProfileConfig();
if (pc instanceof BrowserSSOProfileConfiguration) {
diff --git a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/relyingparty/impl/RelyingPartyConfigurationSupport.java b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/relyingparty/impl/RelyingPartyConfigurationSupport.java
index e3150fbd2..5405436c8 100644
--- a/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/relyingparty/impl/RelyingPartyConfigurationSupport.java
+++ b/idp-saml-impl/src/main/java/net/shibboleth/idp/saml/relyingparty/impl/RelyingPartyConfigurationSupport.java
@@ -33,7 +33,7 @@ import org.opensaml.saml.saml2.metadata.EntityDescriptor;
import net.shibboleth.idp.profile.relyingparty.RelyingPartyConfiguration;
import net.shibboleth.idp.saml.profile.context.navigate.SAMLMetadataContextLookupFunction;
import net.shibboleth.idp.saml.profile.logic.MappedEntityAttributesPredicate;
-import net.shibboleth.profile.logic.RelyingPartyIdPredicate;
+import net.shibboleth.profile.context.logic.RelyingPartyIdPredicate;
import net.shibboleth.shared.annotation.constraint.NonnullElements;
import net.shibboleth.shared.logic.Constraint;
import net.shibboleth.shared.logic.StrategyIndirectedPredicate;
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list