[java-metadata-aggregator] branch main updated: MDA-302 - More consistent context indication from validators
Ian Young
ian at iay.org.uk
Fri Feb 2 11:44:38 UTC 2024
This is an automated email from the git hooks/post-receive script.
iay pushed a commit to branch main
in repository java-metadata-aggregator.
View the commit online:
http://git.shibboleth.net/view/?p=java-metadata-aggregator.git;a=commit;h=6a711723a67d46410e0327f154d6df3d4107abb4
The following commit(s) were added to refs/heads/main by this push:
new 6a71172 MDA-302 - More consistent context indication from validators
6a71172 is described below
commit 6a711723a67d46410e0327f154d6df3d4107abb4
Author: Ian Young <ian at iay.org.uk>
AuthorDate: Fri Feb 2 11:44:26 2024 +0000
MDA-302 - More consistent context indication from validators
https://shibboleth.atlassian.net/browse/MDA-302
---
.../metadata/validate/AcceptAllValidator.java | 2 +-
.../metadata/validate/BaseAsValidator.java | 21 ++--------
.../metadata/validate/BaseValidator.java | 46 ++++++++++------------
.../metadata/validate/RejectAllValidator.java | 4 +-
.../shibboleth/metadata/validate/Validator.java | 29 +++++++++-----
.../metadata/validate/ValidatorSequence.java | 4 +-
...ectDomainNameNotUnderPublicSuffixValidator.java | 4 +-
.../net/RejectDomainNamePublicSuffixValidator.java | 4 +-
.../string/AcceptStringRegexValidator.java | 2 +-
.../string/AcceptStringValueValidator.java | 2 +-
.../string/RejectStringRegexValidator.java | 4 +-
.../string/RejectStringValueValidator.java | 4 +-
.../validate/url/EmptyPortURLValidator.java | 4 +-
.../validate/url/HTTPSProtocolURLValidator.java | 4 +-
.../validate/url/MissingHostURLValidator.java | 4 +-
.../validate/x509/AbstractX509Validator.java | 9 ++---
.../metadata/validate/x509/X509DSADetector.java | 4 +-
.../metadata/validate/x509/X509ROCAValidator.java | 4 +-
.../validate/x509/X509RSAExponentValidator.java | 8 ++--
.../validate/x509/X509RSAKeyLengthValidator.java | 6 +--
.../x509/X509RSAOpenSSLBlacklistValidator.java | 4 +-
.../dom/AbstractDOMValidationStageTest.java | 6 +--
.../metadata/validate/BaseAsValidatorTest.java | 39 ++++++++++++++++--
.../metadata/validate/BaseValidatorTest.java | 20 ++--------
.../string/AsDomainNameStringValidatorTest.java | 2 +-
.../string/AsLiteralTailStringValidatorTest.java | 2 +-
.../metadata/validate/testing/BoomValidator.java} | 21 +++++-----
.../validate/testing/CollectingValidator.java | 2 +-
.../validate/x509/X509ROCAValidatorTest.java | 3 ++
29 files changed, 139 insertions(+), 129 deletions(-)
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/AcceptAllValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/AcceptAllValidator.java
index ebe1c49..bfbab0f 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/AcceptAllValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/AcceptAllValidator.java
@@ -32,7 +32,7 @@ import net.shibboleth.metadata.Item;
public class AcceptAllValidator<V> extends BaseValidator implements Validator<V> {
@Override
- public @Nonnull Action validate(@Nonnull final V e, @Nonnull final Item<?> item, @Nonnull final String stageId) {
+ public @Nonnull Action validate(@Nonnull final V e, @Nonnull final Item<?> item, @Nonnull final String callerId) {
return Action.DONE;
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/BaseAsValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/BaseAsValidator.java
index 62154b7..7349366 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/BaseAsValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/BaseAsValidator.java
@@ -98,21 +98,6 @@ public abstract class BaseAsValidator<V, A> extends BaseValidator implements Val
return conversionRequired;
}
- /**
- * Apply each of the configured validators in turn to the provided object.
- *
- * @param value object to be validated
- * @param item the {@link Item} context for the validation
- *
- * @return the result of applying the validators to the value
- *
- * @throws StageProcessingException if errors occur during processing
- */
- protected @Nonnull Action applyValidators(@Nonnull final A value, @Nonnull final Item<?> item)
- throws StageProcessingException {
- return validators.validate(value, item, ensureId());
- }
-
/**
* Convert from the old value type to the new.
*
@@ -123,14 +108,14 @@ public abstract class BaseAsValidator<V, A> extends BaseValidator implements Val
protected abstract @Nonnull A convert(@Nonnull final V from) throws IllegalArgumentException;
@Override
- public @Nonnull Action validate(@Nonnull final V t, @Nonnull final Item<?> item, @Nonnull final String stageId)
+ public @Nonnull Action validate(@Nonnull final V t, @Nonnull final Item<?> item, @Nonnull final String callerId)
throws StageProcessingException {
try {
final A v = convert(t);
- return applyValidators(v, item);
+ return validators.validate(v, item, makeComponentId(callerId));
} catch (final IllegalArgumentException e) {
if (isConversionRequired()) {
- addErrorMessage(t, item, stageId, e);
+ addErrorMessage(t, item, callerId, e);
return Action.DONE;
} else {
return Action.CONTINUE;
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/BaseValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/BaseValidator.java
index 6a624ec..4166816 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/BaseValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/BaseValidator.java
@@ -74,19 +74,15 @@ public abstract class BaseValidator extends AbstractIdentifiableInitializableCom
}
/**
- * Construct a modified component identifier from the stage identifier and the
- * validator identifier.
+ * Construct a modified component identifier by combining the identifier for the caller
+ * with the validator's own identifier.
*
- * @param stageId identifier for the calling stage
+ * @param callerId a {@link String} identifying the caller
*
* @return composite component identifier
*/
- private @Nonnull String makeComponentId(@Nonnull final String stageId) {
- final String id = getId();
- if (id == null) {
- return stageId;
- }
- return stageId + "/" + getId();
+ protected @Nonnull String makeComponentId(final @Nonnull String callerId) {
+ return callerId + "/" + ensureId();
}
/**
@@ -94,11 +90,11 @@ public abstract class BaseValidator extends AbstractIdentifiableInitializableCom
*
* @param mess message to include in the status metadata
* @param item {@link Item} to add the status metadata to
- * @param stageId component identifier for the calling stage
+ * @param callerId a {@link String} identifying the caller
*/
protected void addError(@Nonnull final String mess, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
- item.getItemMetadata().put(new ErrorStatus(makeComponentId(stageId), mess));
+ @Nonnull final String callerId) {
+ item.getItemMetadata().put(new ErrorStatus(makeComponentId(callerId), mess));
}
/**
@@ -106,11 +102,11 @@ public abstract class BaseValidator extends AbstractIdentifiableInitializableCom
*
* @param mess message to include in the status metadata
* @param item {@link Item} to add the status metadata to
- * @param stageId component identifier for the calling stage
+ * @param callerId a {@link String} identifying the caller
*/
protected void addWarning(@Nonnull final String mess, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
- item.getItemMetadata().put(new WarningStatus(makeComponentId(stageId), mess));
+ @Nonnull final String callerId) {
+ item.getItemMetadata().put(new WarningStatus(makeComponentId(callerId), mess));
}
/**
@@ -119,14 +115,14 @@ public abstract class BaseValidator extends AbstractIdentifiableInitializableCom
* @param error <code>true</code> if an {@link ErrorStatus} should be added
* @param mess message to include in the status metadata
* @param item {@link Item} to add the status metadata to
- * @param stageId component identifier for the calling stage
+ * @param callerId a {@link String} identifying the caller
*/
protected void addStatus(final boolean error, @Nonnull final String mess, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
+ @Nonnull final String callerId) {
if (error) {
- addError(mess, item, stageId);
+ addError(mess, item, callerId);
} else {
- addWarning(mess, item, stageId);
+ addWarning(mess, item, callerId);
}
}
@@ -180,13 +176,13 @@ public abstract class BaseValidator extends AbstractIdentifiableInitializableCom
*
* @param extra extra value to include in the status metadata
* @param item {@link Item} to add the status metadata to
- * @param stageId component identifier for the calling stage
+ * @param callerId a {@link String} identifying the caller
*
* @since 0.10.0
*/
protected void addErrorMessage(@Nonnull final Object extra, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
- addError(formatMessage(extra), item, stageId);
+ @Nonnull final String callerId) {
+ addError(formatMessage(extra), item, callerId);
}
/**
@@ -199,13 +195,13 @@ public abstract class BaseValidator extends AbstractIdentifiableInitializableCom
*
* @param extra extra value to include in the status metadata
* @param item {@link Item} to add the status metadata to
- * @param stageId component identifier for the calling stage
+ * @param callerId a {@link String} identifying the caller
* @param cause reason for the validation failure, as a {@link Throwable}
*
* @since 0.10.0
*/
protected void addErrorMessage(@Nonnull final Object extra, @Nonnull final Item<?> item,
- @Nonnull final String stageId, @Nonnull final Throwable cause) {
- addError(formatMessage(extra, cause), item, stageId);
+ @Nonnull final String callerId, @Nonnull final Throwable cause) {
+ addError(formatMessage(extra, cause), item, callerId);
}
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/RejectAllValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/RejectAllValidator.java
index acc7d03..be7aead 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/RejectAllValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/RejectAllValidator.java
@@ -35,8 +35,8 @@ import net.shibboleth.metadata.Item;
public class RejectAllValidator<V> extends BaseValidator implements Validator<V> {
@Override
- public @Nonnull Action validate(@Nonnull final V e, @Nonnull final Item<?> item, @Nonnull final String stageId) {
- addErrorMessage(e, item, stageId);
+ public @Nonnull Action validate(@Nonnull final V e, @Nonnull final Item<?> item, @Nonnull final String callerId) {
+ addErrorMessage(e, item, callerId);
return Action.DONE;
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/Validator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/Validator.java
index 2cafbab..f4dddf4 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/Validator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/Validator.java
@@ -24,13 +24,13 @@ import net.shibboleth.shared.component.IdentifiableComponent;
import net.shibboleth.shared.component.InitializableComponent;
/**
- * Interface for a validator to be applied to an object in the context of a given {@link Item}.
+ * Interface for a validator to be applied to an value in the context of a given {@link Item}.
*
* <p>
* {@code Validator}s <strong>must</strong> be thread-safe.
* </p>
*
- * @param <V> type of the object to be validated
+ * @param <V> type of the value to be validated
*
* @since 0.9.0
*/
@@ -56,18 +56,29 @@ public interface Validator<V> extends DestructableComponent, IdentifiableCompone
}
/**
- * Apply the validator to the object in the given {@link Item} context.
- *
+ * Apply the validator to a value in the context of the given {@link Item}.
+ *
+ * <p>
* The validator influences future processing by adding item metadata to the {@link Item}.
- *
- * @param e the object to be validated
+ * </p>
+ *
+ * <p>
+ * A common case is that the validator will add a {@link net.shibboleth.metadata.StatusMetadata}
+ * to the {@link Item}, for example a {@link net.shibboleth.metadata.ErrorStatus}.
+ * In this case, the convention is that the {@code componentId} of the
+ * {@link net.shibboleth.metadata.ErrorStatus} would be created by combining the
+ * {@code callerId} with a <code>/</code> and the validator's own identifier.
+ * For example, a validator {@code val} called by a stage {@code stage} would
+ * normally use a {@code componentId} of <code>stage/val</code>.
+ * </p>
+ *
+ * @param value the value to be validated
* @param item the {@link Item} context for the validation
- * @param stageId the identifier for the stage that is requesting the validation, for
- * inclusion in status metadata
+ * @param callerId a {@link String} identifying the caller
* @return an indication of whether to process additional validators
* @throws StageProcessingException if an error occurs during validation
*/
- @Nonnull Action validate(@Nonnull V e, @Nonnull Item<?> item, @Nonnull String stageId)
+ @Nonnull Action validate(@Nonnull V value, @Nonnull Item<?> item, @Nonnull String callerId)
throws StageProcessingException;
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/ValidatorSequence.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/ValidatorSequence.java
index 409ddda..a5f681e 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/ValidatorSequence.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/ValidatorSequence.java
@@ -68,10 +68,10 @@ public class ValidatorSequence<V> extends BaseValidator implements Validator<V>
}
@Override
- public @Nonnull Action validate(@Nonnull final V value, @Nonnull final Item<?> item, @Nonnull final String stageId)
+ public @Nonnull Action validate(@Nonnull final V value, @Nonnull final Item<?> item, @Nonnull final String callerId)
throws StageProcessingException {
for (final Validator<V> validator: getValidators()) {
- final Action action = validator.validate(value, item, stageId);
+ final Action action = validator.validate(value, item, callerId);
if (action == Action.DONE) {
return action;
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/net/RejectDomainNameNotUnderPublicSuffixValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/net/RejectDomainNameNotUnderPublicSuffixValidator.java
index ddca7cd..4885fb1 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/net/RejectDomainNameNotUnderPublicSuffixValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/net/RejectDomainNameNotUnderPublicSuffixValidator.java
@@ -39,11 +39,11 @@ public class RejectDomainNameNotUnderPublicSuffixValidator extends BaseValidator
@Override
public @Nonnull Action validate(@Nonnull final InternetDomainName domain, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
+ @Nonnull final String callerId) {
if (domain.isUnderPublicSuffix()) {
return Action.CONTINUE;
} else {
- addErrorMessage(domain, item, stageId);
+ addErrorMessage(domain, item, callerId);
return Action.DONE;
}
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/net/RejectDomainNamePublicSuffixValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/net/RejectDomainNamePublicSuffixValidator.java
index 16f2436..84748ef 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/net/RejectDomainNamePublicSuffixValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/net/RejectDomainNamePublicSuffixValidator.java
@@ -34,9 +34,9 @@ public class RejectDomainNamePublicSuffixValidator extends BaseValidator
@Override
public @Nonnull Action validate(@Nonnull final InternetDomainName domain, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
+ @Nonnull final String callerId) {
if (domain.isPublicSuffix()) {
- addErrorMessage(domain, item, stageId);
+ addErrorMessage(domain, item, callerId);
return Action.DONE;
} else {
return Action.CONTINUE;
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/AcceptStringRegexValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/AcceptStringRegexValidator.java
index fa50803..56cac3b 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/AcceptStringRegexValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/AcceptStringRegexValidator.java
@@ -35,7 +35,7 @@ public class AcceptStringRegexValidator extends BaseStringRegexValidator impleme
@Override
public @Nonnull Action validate(@Nonnull final String e, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
+ @Nonnull final String callerId) {
final Matcher matcher = getPattern().matcher(e);
if (matcher.matches()) {
return Action.DONE;
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/AcceptStringValueValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/AcceptStringValueValidator.java
index 55e1fed..7bd2fab 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/AcceptStringValueValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/AcceptStringValueValidator.java
@@ -33,7 +33,7 @@ public class AcceptStringValueValidator extends BaseStringValueValidator impleme
@Override
public @Nonnull Action validate(@Nonnull final String e, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
+ @Nonnull final String callerId) {
if (e.equals(getValue())) {
return Action.DONE;
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/RejectStringRegexValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/RejectStringRegexValidator.java
index e82dd5a..6af2965 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/RejectStringRegexValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/RejectStringRegexValidator.java
@@ -35,10 +35,10 @@ public class RejectStringRegexValidator extends BaseStringRegexValidator impleme
@Override
public @Nonnull Action validate(@Nonnull final String e, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
+ @Nonnull final String callerId) {
final Matcher matcher = getPattern().matcher(e);
if (matcher.matches()) {
- addErrorMessage(e, item, stageId);
+ addErrorMessage(e, item, callerId);
return Action.DONE;
}
return Action.CONTINUE;
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/RejectStringValueValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/RejectStringValueValidator.java
index e163de1..1847879 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/RejectStringValueValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/string/RejectStringValueValidator.java
@@ -33,9 +33,9 @@ public class RejectStringValueValidator extends BaseStringValueValidator impleme
@Override
public @Nonnull Action validate(@Nonnull final String e, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
+ @Nonnull final String callerId) {
if (e.equals(getValue())) {
- addErrorMessage(e, item, stageId);
+ addErrorMessage(e, item, callerId);
return Action.DONE;
}
return Action.CONTINUE;
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/url/EmptyPortURLValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/url/EmptyPortURLValidator.java
index 321596c..88a1f0c 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/url/EmptyPortURLValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/url/EmptyPortURLValidator.java
@@ -30,11 +30,11 @@ public class EmptyPortURLValidator extends BaseValidator implements Validator<UR
@Override
public @Nonnull Action validate(final @Nonnull URL url, final @Nonnull Item<?> item,
- final @Nonnull String stageId) throws StageProcessingException {
+ final @Nonnull String callerId) throws StageProcessingException {
final String authority = url.getAuthority();
if (authority != null && !authority.isEmpty()) {
if (authority.charAt(authority.length() - 1) == ':') {
- addError("libxml2: port present but empty", item, stageId);
+ addError("libxml2: port present but empty", item, callerId);
return Action.DONE;
}
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/url/HTTPSProtocolURLValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/url/HTTPSProtocolURLValidator.java
index 8394535..6e83204 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/url/HTTPSProtocolURLValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/url/HTTPSProtocolURLValidator.java
@@ -31,10 +31,10 @@ public class HTTPSProtocolURLValidator extends BaseValidator implements Validato
@Override
public @Nonnull Action validate(final @Nonnull URL url, final @Nonnull Item<?> item,
- final @Nonnull String stageId) throws StageProcessingException {
+ final @Nonnull String callerId) throws StageProcessingException {
final var protocol = url.getProtocol();
if (!"https".equals(protocol)) {
- addError("protocol '" + protocol + "' must be https", item, stageId);
+ addError("protocol '" + protocol + "' must be https", item, callerId);
return Action.DONE;
}
return Action.CONTINUE;
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/url/MissingHostURLValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/url/MissingHostURLValidator.java
index b540795..d082d6c 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/url/MissingHostURLValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/url/MissingHostURLValidator.java
@@ -30,9 +30,9 @@ public class MissingHostURLValidator extends BaseValidator implements Validator<
@Override
public @Nonnull Action validate(final @Nonnull URL url, final @Nonnull Item<?> item,
- final @Nonnull String stageId) throws StageProcessingException {
+ final @Nonnull String callerId) throws StageProcessingException {
if ("".equals(url.getHost())) {
- addError("host name not present", item, stageId);
+ addError("host name not present", item, callerId);
return Action.DONE;
}
return Action.CONTINUE;
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/AbstractX509Validator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/AbstractX509Validator.java
index d22a095..81a6e32 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/AbstractX509Validator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/AbstractX509Validator.java
@@ -42,17 +42,16 @@ public abstract class AbstractX509Validator extends BaseValidator implements Val
*
* @param cert the certificate to be validated
* @param item the {@link Item} context for the validation
- * @param stageId the identifier for the stage that is requesting the validation, for
- * inclusion in status metadata
+ * @param callerId a {@link String} identifying the caller
* @throws StageProcessingException if an error occurs during validation
*/
protected abstract void doValidate(@Nonnull final X509Certificate cert, @Nonnull final Item<?> item,
- @Nonnull final String stageId) throws StageProcessingException;
+ @Nonnull final String callerId) throws StageProcessingException;
@Override
public @Nonnull Action validate(@Nonnull final X509Certificate cert, @Nonnull final Item<?> item,
- @Nonnull final String stageId) throws StageProcessingException {
- doValidate(cert, item, stageId);
+ @Nonnull final String callerId) throws StageProcessingException {
+ doValidate(cert, item, callerId);
return Action.CONTINUE;
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509DSADetector.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509DSADetector.java
index bdcdd1b..b0a4139 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509DSADetector.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509DSADetector.java
@@ -102,10 +102,10 @@ public class X509DSADetector extends BaseValidator implements Validator<X509Cert
@Override
public @Nonnull Action validate(@Nonnull final X509Certificate cert, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
+ @Nonnull final String callerId) {
final PublicKey key = cert.getPublicKey();
if ("DSA".equals(key.getAlgorithm())) {
- addStatus(isError(), "certificate contains a DSA key", item, stageId);
+ addStatus(isError(), "certificate contains a DSA key", item, callerId);
return getAction();
}
return Action.CONTINUE;
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509ROCAValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509ROCAValidator.java
index c601b6c..d0f5485 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509ROCAValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509ROCAValidator.java
@@ -119,14 +119,14 @@ public class X509ROCAValidator extends AbstractX509Validator {
@Override
public void doValidate(@Nonnull final X509Certificate cert, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
+ @Nonnull final String callerId) {
final PublicKey key = cert.getPublicKey();
if ("RSA".equals(key.getAlgorithm())) {
final RSAPublicKey rsaKey = (RSAPublicKey) key;
final var modulus = rsaKey.getModulus();
assert modulus != null;
if (BrokenKey.isAffected(modulus)) {
- addError("RSA public key is vulnerable to ROCA", item, stageId);
+ addError("RSA public key is vulnerable to ROCA", item, callerId);
}
}
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509RSAExponentValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509RSAExponentValidator.java
index ea31e3c..e9a3ed3 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509RSAExponentValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509RSAExponentValidator.java
@@ -119,19 +119,19 @@ public class X509RSAExponentValidator extends AbstractX509Validator {
@Override
public void doValidate(@Nonnull final X509Certificate cert, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
+ @Nonnull final String callerId) {
final PublicKey key = cert.getPublicKey();
if ("RSA".equals(key.getAlgorithm())) {
final RSAPublicKey rsaKey = (RSAPublicKey) key;
final BigInteger exponent = rsaKey.getPublicExponent();
if (!exponent.testBit(0)) {
- addError("RSA public exponent of " + exponent + " must be odd", item, stageId);
+ addError("RSA public exponent of " + exponent + " must be odd", item, callerId);
} else if (exponent.compareTo(getErrorBoundary()) < 0) {
addError("RSA public exponent of " + exponent + " is less than required " + getErrorBoundary(),
- item, stageId);
+ item, callerId);
} else if (exponent.compareTo(getWarningBoundary()) < 0) {
addWarning("RSA public exponent of " + exponent + " is less than recommended " + getWarningBoundary(),
- item, stageId);
+ item, callerId);
}
}
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509RSAKeyLengthValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509RSAKeyLengthValidator.java
index 1f46110..dfa22d1 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509RSAKeyLengthValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509RSAKeyLengthValidator.java
@@ -83,17 +83,17 @@ public class X509RSAKeyLengthValidator extends AbstractX509Validator {
@Override
public void doValidate(@Nonnull final X509Certificate cert, @Nonnull final Item<?> item,
- @Nonnull final String stageId) {
+ @Nonnull final String callerId) {
final PublicKey key = cert.getPublicKey();
if ("RSA".equals(key.getAlgorithm())) {
final RSAPublicKey rsaKey = (RSAPublicKey) key;
final int keyLen = rsaKey.getModulus().bitLength();
if (keyLen < getErrorBoundary()) {
addError("RSA key length of " + keyLen + " bits is less than required " + getErrorBoundary(),
- item, stageId);
+ item, callerId);
} else if (keyLen < getWarningBoundary()) {
addWarning("RSA key length of " + keyLen + " bits is less than recommended " + getWarningBoundary(),
- item, stageId);
+ item, callerId);
}
}
}
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509RSAOpenSSLBlacklistValidator.java b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509RSAOpenSSLBlacklistValidator.java
index 39b2867..d1f5e22 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509RSAOpenSSLBlacklistValidator.java
+++ b/mda-framework/src/main/java/net/shibboleth/metadata/validate/x509/X509RSAOpenSSLBlacklistValidator.java
@@ -158,7 +158,7 @@ public class X509RSAOpenSSLBlacklistValidator extends AbstractX509Validator {
@Override
public void doValidate(@Nonnull final X509Certificate cert, @Nonnull final Item<?> item,
- @Nonnull final String stageId) throws StageProcessingException {
+ @Nonnull final String callerId) throws StageProcessingException {
checkComponentActive();
final PublicKey key = cert.getPublicKey();
@@ -178,7 +178,7 @@ public class X509RSAOpenSSLBlacklistValidator extends AbstractX509Validator {
final String value = openSSLDigest(modulus);
if (values.contains(value)) {
addError("RSA modulus included in key blacklist (" + value + ")",
- item, stageId);
+ item, callerId);
}
}
}
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/dom/AbstractDOMValidationStageTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/dom/AbstractDOMValidationStageTest.java
index 77741c7..9aaa2e6 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/dom/AbstractDOMValidationStageTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/dom/AbstractDOMValidationStageTest.java
@@ -61,9 +61,9 @@ public class AbstractDOMValidationStageTest extends BaseDOMTest {
private static class FirstStringValidator extends BaseValidator implements Validator<String> {
@Override
- public @Nonnull Action validate(final @Nonnull String e, final @Nonnull Item<?> item, final @Nonnull String stageId)
+ public @Nonnull Action validate(final @Nonnull String e, final @Nonnull Item<?> item, final @Nonnull String callerId)
throws StageProcessingException {
- addError("element contains " + e, item, stageId);
+ addError("element contains " + e, item, callerId);
return Action.DONE; // once per value checked
}
@@ -73,7 +73,7 @@ public class AbstractDOMValidationStageTest extends BaseDOMTest {
@Override
public @Nonnull Action validate(final @Nonnull String e, final @Nonnull Item<?> item,
- final @Nonnull String stageId)
+ final @Nonnull String callerId)
throws StageProcessingException {
Assert.fail("should not execute this");
return Action.CONTINUE;
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/validate/BaseAsValidatorTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/validate/BaseAsValidatorTest.java
index bea4466..98e0be0 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/validate/BaseAsValidatorTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/validate/BaseAsValidatorTest.java
@@ -1,5 +1,8 @@
package net.shibboleth.metadata.validate;
+import java.util.ArrayList;
+import java.util.List;
+
import javax.annotation.Nonnull;
import org.testng.Assert;
@@ -8,6 +11,7 @@ import org.testng.annotations.Test;
import net.shibboleth.metadata.ErrorStatus;
import net.shibboleth.metadata.testing.MockItem;
import net.shibboleth.metadata.validate.Validator.Action;
+import net.shibboleth.metadata.validate.testing.BoomValidator;
public class BaseAsValidatorTest {
@@ -15,7 +19,7 @@ public class BaseAsValidatorTest {
/**
* Test an "as" validator which always fails to convert.
*/
- private class BoomValidator extends BaseAsValidator<String, String> {
+ private class BoomAsValidator extends BaseAsValidator<String, String> {
@Override
protected @Nonnull String convert(@Nonnull String from) throws IllegalArgumentException {
@@ -27,11 +31,20 @@ public class BaseAsValidatorTest {
}
}
+
+ private class PassThroughAsValidator<T> extends BaseAsValidator<T, T> {
+
+ @Override
+ protected @Nonnull T convert(@Nonnull T from) throws IllegalArgumentException {
+ return from;
+ }
+
+ }
@Test
public void convertTestNoDetail() throws Exception {
- final var validator = new BoomValidator();
+ final var validator = new BoomAsValidator();
validator.setId("test");
validator.initialize();
@@ -50,7 +63,7 @@ public class BaseAsValidatorTest {
@Test
public void convertTestWithDetail() throws Exception {
- final var validator = new BoomValidator();
+ final var validator = new BoomAsValidator();
validator.setId("test");
validator.initialize();
@@ -65,4 +78,24 @@ public class BaseAsValidatorTest {
Assert.assertEquals(err.getStatusMessage(), "value rejected: 'not nothing' (something)");
Assert.assertEquals(err.getComponentId(), "stage/test");
}
+
+ @Test
+ public void nestedComponentId() throws Exception {
+ final var boomer = new BoomValidator<String>();
+ boomer.setId("boomer");
+ boomer.initialize();
+ final var passer = new PassThroughAsValidator<String>();
+ passer.setId("passer");
+ final @Nonnull List<Validator<String>> inners = new ArrayList<>();
+ inners.add(boomer);
+ passer.setValidators(inners);
+ passer.initialize();
+ final var item = new MockItem("data");
+ final var res = passer.validate("value", item, "outer");
+ Assert.assertEquals(res, Action.DONE);
+ final var errors = item.getItemMetadata().get(ErrorStatus.class);
+ Assert.assertEquals(errors.size(), 1);
+ Assert.assertEquals(errors.get(0).getComponentId(), "outer/passer/boomer");
+ Assert.assertEquals(errors.get(0).getStatusMessage(), "value rejected: 'value'");
+ }
}
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/validate/BaseValidatorTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/validate/BaseValidatorTest.java
index ec9fb95..a6242b3 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/validate/BaseValidatorTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/validate/BaseValidatorTest.java
@@ -3,8 +3,6 @@ package net.shibboleth.metadata.validate;
import java.util.List;
-import javax.annotation.Nonnull;
-
import org.testng.Assert;
import org.testng.annotations.Test;
@@ -12,25 +10,13 @@ import net.shibboleth.metadata.ErrorStatus;
import net.shibboleth.metadata.Item;
import net.shibboleth.metadata.testing.MockItem;
import net.shibboleth.metadata.validate.Validator.Action;
+import net.shibboleth.metadata.validate.testing.BoomValidator;
public class BaseValidatorTest {
- /**
- * Test String validator which always rejects.
- */
- private class BoomValidator extends BaseValidator implements Validator<String> {
-
- public @Nonnull Action validate(final @Nonnull String e, final @Nonnull Item<?> item,
- final @Nonnull String stageId) {
- addErrorMessage(e, item, stageId);
- return Action.DONE;
- }
-
- }
-
@Test
public void getMessage() throws Exception {
- final BoomValidator b = new BoomValidator();
+ final var b = new BoomValidator<String>();
b.setId("test");
b.initialize();
Assert.assertEquals(b.getMessage(), "value rejected: '%s'");
@@ -43,7 +29,7 @@ public class BaseValidatorTest {
@Test
public void setMessage() throws Exception {
- final BoomValidator b = new BoomValidator();
+ final var b = new BoomValidator<String>();
b.setId("test");
b.setMessage("%s is bad");
b.initialize();
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/validate/string/AsDomainNameStringValidatorTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/validate/string/AsDomainNameStringValidatorTest.java
index 02102fb..6b9dc97 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/validate/string/AsDomainNameStringValidatorTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/validate/string/AsDomainNameStringValidatorTest.java
@@ -26,7 +26,7 @@ public class AsDomainNameStringValidatorTest {
private final @Nonnull Action action;
@Override
- public @Nonnull Action validate(@Nonnull InternetDomainName e, @Nonnull Item<?> item, @Nonnull String stageId)
+ public @Nonnull Action validate(@Nonnull InternetDomainName e, @Nonnull Item<?> item, @Nonnull String callerId)
throws StageProcessingException {
count++;
return action;
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/validate/string/AsLiteralTailStringValidatorTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/validate/string/AsLiteralTailStringValidatorTest.java
index 184e661..c9e2f13 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/validate/string/AsLiteralTailStringValidatorTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/validate/string/AsLiteralTailStringValidatorTest.java
@@ -26,7 +26,7 @@ public class AsLiteralTailStringValidatorTest {
private final @Nonnull Action action;
@Override
- public @Nonnull Action validate(@Nonnull String e, @Nonnull Item<?> item, @Nonnull String stageId) throws StageProcessingException {
+ public @Nonnull Action validate(@Nonnull String e, @Nonnull Item<?> item, @Nonnull String callerId) throws StageProcessingException {
count++;
value = e;
return action;
diff --git a/mda-framework/src/main/java/net/shibboleth/metadata/validate/AcceptAllValidator.java b/mda-framework/src/test/java/net/shibboleth/metadata/validate/testing/BoomValidator.java
similarity index 55%
copy from mda-framework/src/main/java/net/shibboleth/metadata/validate/AcceptAllValidator.java
copy to mda-framework/src/test/java/net/shibboleth/metadata/validate/testing/BoomValidator.java
index ebe1c49..aee9288 100644
--- a/mda-framework/src/main/java/net/shibboleth/metadata/validate/AcceptAllValidator.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/validate/testing/BoomValidator.java
@@ -12,27 +12,24 @@
* limitations under the License.
*/
-package net.shibboleth.metadata.validate;
+package net.shibboleth.metadata.validate.testing;
import javax.annotation.Nonnull;
-import javax.annotation.concurrent.Immutable;
import net.shibboleth.metadata.Item;
+import net.shibboleth.metadata.validate.BaseValidator;
+import net.shibboleth.metadata.validate.Validator;
/**
- * A {@link Validator} which accepts any value, returning
- * {@link net.shibboleth.metadata.validate.Validator.Action#DONE}
- * to terminate any validator sequence.
+ * Test validator which always rejects.
*
- * @param <V> type of the object to be validated
- *
- * @since 0.10.0
+ * @param <T> type of object to validate
*/
- at Immutable
-public class AcceptAllValidator<V> extends BaseValidator implements Validator<V> {
+public class BoomValidator<T> extends BaseValidator implements Validator<T> {
- @Override
- public @Nonnull Action validate(@Nonnull final V e, @Nonnull final Item<?> item, @Nonnull final String stageId) {
+ public @Nonnull Action validate(final @Nonnull T e, final @Nonnull Item<?> item,
+ final @Nonnull String callerId) {
+ addErrorMessage(e, item, callerId);
return Action.DONE;
}
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/validate/testing/CollectingValidator.java b/mda-framework/src/test/java/net/shibboleth/metadata/validate/testing/CollectingValidator.java
index 0ca9e21..7de5cfe 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/validate/testing/CollectingValidator.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/validate/testing/CollectingValidator.java
@@ -65,7 +65,7 @@ public class CollectingValidator<T> extends BaseValidator implements Validator<T
}
@Override
- public @Nonnull Action validate(@Nonnull T e, @Nonnull Item<?> item, @Nonnull String stageId)
+ public @Nonnull Action validate(@Nonnull T e, @Nonnull Item<?> item, @Nonnull String callerId)
throws StageProcessingException {
values.add(e);
return Action.CONTINUE;
diff --git a/mda-framework/src/test/java/net/shibboleth/metadata/validate/x509/X509ROCAValidatorTest.java b/mda-framework/src/test/java/net/shibboleth/metadata/validate/x509/X509ROCAValidatorTest.java
index 6f02ef1..e65d59a 100644
--- a/mda-framework/src/test/java/net/shibboleth/metadata/validate/x509/X509ROCAValidatorTest.java
+++ b/mda-framework/src/test/java/net/shibboleth/metadata/validate/x509/X509ROCAValidatorTest.java
@@ -14,12 +14,15 @@ public class X509ROCAValidatorTest extends BaseX509ValidatorTest {
@Test
public void test() throws Exception {
final X509ROCAValidator val = new X509ROCAValidator();
+ val.setId("test");
+ val.initialize();
testCert("cert01.pem", val, 0, 0);
testCert("cert02.pem", val, 0, 0);
testCert("cert03.pem", val, 0, 0);
testCert("cert04.pem", val, 1, 0);
testCert("cert05.pem", val, 1, 0);
testCert("cert06.pem", val, 0, 0);
+ val.destroy();
}
@Test
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list