[java-opensaml COMMIT] in /trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml: saml1/profile/impl/AddStatusToRe...
noreply at shibboleth.net
noreply at shibboleth.net
Thu Apr 10 13:43:26 EDT 2014
Author: scantor
Date: Thu Apr 10 13:43:26 2014
New Revision: 3778
URL: http://svn.shibboleth.net/view/java-opensaml?rev=3778&view=rev
Log:
Support indirect population of status codes.
Modified:
trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponse.java
trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml2/profile/impl/AddStatusToResponse.java
Modified: trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponse.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponse.java?rev=3778&r1=3777&r2=3778&view=diff
==============================================================================
--- trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponse.java (original)
+++ trunk/opensaml-saml-impl/src/main/java/org/opensaml/saml/saml1/profile/impl/AddStatusToResponse.java Thu Apr 10 13:43:26 2014
@@ -82,11 +82,14 @@
/** Predicate determining whether detailed error information is permitted. */
@Nonnull private Predicate<ProfileRequestContext> detailedErrorsCondition;
+ /** Optional method to obtain status codes. */
+ @Nullable private Function<ProfileRequestContext,List<QName>> statusCodesLookupStrategy;
+
/** Optional method to obtain a status message. */
@Nullable private Function<ProfileRequestContext,String> statusMessageLookupStrategy;
- /** One or more status codes to insert. */
- @Nonnull @NonnullElements private List<QName> statusCodes;
+ /** One or more default status codes to insert. */
+ @Nonnull @NonnullElements private List<QName> defaultStatusCodes;
/** A default status message to include. */
@Nullable private String statusMessage;
@@ -102,7 +105,7 @@
responseLookupStrategy =
Functions.compose(new MessageLookup<>(Response.class), new OutboundMessageContextLookup());
detailedErrorsCondition = Predicates.alwaysFalse();
- statusCodes = Collections.emptyList();
+ defaultStatusCodes = Collections.emptyList();
detailedErrors = false;
}
@@ -119,12 +122,24 @@
}
/**
+ * Set the optional strategy used to obtain status codes to include.
+ *
+ * @param strategy strategy used to obtain status codes
+ */
+ public synchronized void setStatusCodesLookupStrategy(
+ @Nullable final Function<ProfileRequestContext,List<QName>> strategy) {
+ ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
+
+ statusCodesLookupStrategy = strategy;
+ }
+
+ /**
* Set the optional strategy used to obtain a status message to include.
*
* @param strategy strategy used to obtain a status message
*/
public synchronized void setStatusMessageLookupStrategy(
- @Nullable final Function<ProfileRequestContext, String> strategy) {
+ @Nullable final Function<ProfileRequestContext,String> strategy) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
statusMessageLookupStrategy = strategy;
@@ -136,14 +151,14 @@
* @param strategy strategy used to locate the {@link Response} to operate on
*/
public synchronized void setResponseLookupStrategy(
- @Nonnull final Function<ProfileRequestContext, Response> strategy) {
+ @Nonnull final Function<ProfileRequestContext,Response> strategy) {
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
responseLookupStrategy = Constraint.isNotNull(strategy, "Response lookup strategy cannot be null");
}
/**
- * Set the list of status code values to insert, ordered such that the top level code is first
+ * Set the default list of status code values to insert, ordered such that the top level code is first
* and every other code will be nested inside the previous one.
*
* @param codes list of status code values to insert
@@ -152,7 +167,7 @@
ComponentSupport.ifInitializedThrowUnmodifiabledComponentException(this);
Constraint.isNotNull(codes, "Status code list cannot be null");
- statusCodes = Lists.newArrayList(Collections2.filter(codes, Predicates.notNull()));
+ defaultStatusCodes = Lists.newArrayList(Collections2.filter(codes, Predicates.notNull()));
}
/**
@@ -198,7 +213,17 @@
final Status status = statusBuilder.buildObject();
response.setStatus(status);
- buildStatusCode(status);
+
+ if (statusCodesLookupStrategy != null) {
+ final List<QName> codes = statusCodesLookupStrategy.apply(profileRequestContext);
+ if (codes == null || codes.isEmpty()) {
+ buildStatusCode(status, defaultStatusCodes);
+ } else {
+ buildStatusCode(status, codes);
+ }
+ } else {
+ buildStatusCode(status, defaultStatusCodes);
[... 138 lines stripped ...]
More information about the commits
mailing list