public interface ChecksumPolicy
void validateChecksums() throws ChecksumFailureException { for (checksum : checksums) { switch (checksum.state) { case MATCH: if (policy.onChecksumMatch(...)) { return; } break; case MISMATCH: policy.onChecksumMismatch(...); break; case ERROR: policy.onChecksumError(...); break; } } policy.onNoMoreChecksums(); } void downloadFile() throws Exception { ... policy = newChecksumPolicy(); try { validateChecksums(); } catch (ChecksumFailureException e) { if (!policy.onTransferChecksumFailure(...)) { throw e; } } }
Checksum policies might be stateful and are generally not thread-safe.
Modifier and Type | Interface and Description |
---|---|
static class |
ChecksumPolicy.ChecksumKind
Enum denoting origin of checksum.
|
Modifier and Type | Method and Description |
---|---|
void |
onChecksumError(String algorithm,
ChecksumPolicy.ChecksumKind kind,
ChecksumFailureException exception)
Signals an error while computing the local checksum value or retrieving the checksum value from the remote
repository.
|
boolean |
onChecksumMatch(String algorithm,
ChecksumPolicy.ChecksumKind kind)
Signals a match between the locally computed checksum value and the checksum value declared by the remote
repository.
|
void |
onChecksumMismatch(String algorithm,
ChecksumPolicy.ChecksumKind kind,
ChecksumFailureException exception)
Signals a mismatch between the locally computed checksum value and the checksum value declared by the remote
repository.
|
void |
onNoMoreChecksums()
Signals that all available checksums have been processed.
|
boolean |
onTransferChecksumFailure(ChecksumFailureException exception)
Signals that (even after a potential retry) checksum validation has failed.
|
void |
onTransferRetry()
Signals that the download is being retried after a previously thrown
ChecksumFailureException that is
retry-worthy . |
boolean onChecksumMatch(String algorithm, ChecksumPolicy.ChecksumKind kind)
algorithm
- The name of the checksum algorithm being used, must not be null
.kind
- A field providing further details about the checksum.true
to accept the download as valid and stop further validation, false
to continue
validation with the next checksum.void onChecksumMismatch(String algorithm, ChecksumPolicy.ChecksumKind kind, ChecksumFailureException exception) throws ChecksumFailureException
algorithm
- The name of the checksum algorithm being used, must not be null
.kind
- A field providing further details about the checksum.exception
- The exception describing the checksum mismatch, must not be null
.ChecksumFailureException
- If the checksum validation is to be failed. If the method returns normally,
validation continues with the next checksum.void onChecksumError(String algorithm, ChecksumPolicy.ChecksumKind kind, ChecksumFailureException exception) throws ChecksumFailureException
algorithm
- The name of the checksum algorithm being used, must not be null
.kind
- A field providing further details about the checksum.exception
- The exception describing the checksum error, must not be null
.ChecksumFailureException
- If the checksum validation is to be failed. If the method returns normally,
validation continues with the next checksum.void onNoMoreChecksums() throws ChecksumFailureException
ChecksumFailureException
- If the checksum validation is to be failed. If the method returns normally, the
download is assumed to be valid.void onTransferRetry()
ChecksumFailureException
that is
retry-worthy
. Policies that maintain internal state will usually
have to reset some of this state at this point to prepare for a new round of validation.boolean onTransferChecksumFailure(ChecksumFailureException exception)
exception
- The exception that was thrown from a prior call to
onChecksumMismatch(String, ChecksumKind, ChecksumFailureException)
,
onChecksumError(String, ChecksumKind, ChecksumFailureException)
or onNoMoreChecksums()
.true
to accept the download nevertheless and let artifact resolution succeed, false
to
reject the transferred file as unusable.Copyright © 2010–2022 The Apache Software Foundation. All rights reserved.