Class SummaryFileTrustedChecksumsSource
- All Implemented Interfaces:
org.eclipse.aether.spi.checksums.TrustedChecksumsSource
FileTrustedChecksumsSourceSupport implementation that use specified directory as base
directory, where it expects a "summary" file named as "checksums.${checksumExt}" for each checksum algorithm.
File format is GNU Coreutils compatible: each line holds checksum followed by two spaces and artifact relative path
(from local repository root, without leading "./"). This means that trusted checksums summary file can be used to
validate artifacts or generate it using standard GNU tools like GNU sha1sum is (for BSD derivatives same
file can be used with -r switch).
The format supports comments "#" (hash) and empty lines for easier structuring the file content, and both are ignored. Also, their presence makes the summary file incompatible with GNU Coreutils format. On save of the summary file, the comments and empty lines are lost, and file is sorted by path names for easier diffing (2nd column in file).
The source by default is "origin aware", and it will factor in origin repository ID as well into summary file name, for example "checksums-central.sha256".
Example commands for managing summary file (in examples will use repository ID "central"):
- To create summary file:
find * -not -name "checksums-central.sha256" -type f -print0 | xargs -0 sha256sum | sort -k 2 > checksums-central.sha256 - To verify artifacts using summary file:
sha256sum --quiet -c checksums-central.sha256
The checksums summary file is lazily loaded and remains cached during lifetime of the component, so file changes during lifecycle of the component are not picked up. This implementation can be simultaneously used to lookup and also record checksums. The recorded checksums will become visible for every session, and will be flushed at repository system shutdown, merged with existing ones on disk.
The name of this implementation is "summaryFile".
- Since:
- 1.9.0
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.eclipse.aether.spi.checksums.TrustedChecksumsSource
org.eclipse.aether.spi.checksums.TrustedChecksumsSource.Writer -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionSummaryFileTrustedChecksumsSource(LocalPathComposer localPathComposer, RepositorySystemLifecycle repositorySystemLifecycle, org.eclipse.aether.spi.io.PathProcessor pathProcessor) -
Method Summary
Modifier and TypeMethodDescriptiondoGetTrustedArtifactChecksums(org.eclipse.aether.RepositorySystemSession session, org.eclipse.aether.artifact.Artifact artifact, org.eclipse.aether.repository.ArtifactRepository artifactRepository, List<org.eclipse.aether.spi.connector.checksum.ChecksumAlgorithmFactory> checksumAlgorithmFactories) Implementors MUST NOT returnnullat this point, as this source is enabled.protected org.eclipse.aether.spi.checksums.TrustedChecksumsSource.WriterdoGetTrustedArtifactChecksumsWriter(org.eclipse.aether.RepositorySystemSession session) Implementors may override this method and returnTrustedChecksumsSource.Writerinstance.protected PathgetBasedir(org.eclipse.aether.RepositorySystemSession session, String defaultValue, String configPropKey, boolean mayCreate) Uses utilityDirectoryUtils.resolveDirectory(RepositorySystemSession, String, String, boolean)to calculate (and maybe create) basedir for this implementation, never returnsnull.getTrustedArtifactChecksums(org.eclipse.aether.RepositorySystemSession session, org.eclipse.aether.artifact.Artifact artifact, org.eclipse.aether.repository.ArtifactRepository artifactRepository, List<org.eclipse.aether.spi.connector.checksum.ChecksumAlgorithmFactory> checksumAlgorithmFactories) This implementation will call into underlying code only if enabled, and will enforce non-nullreturn value.org.eclipse.aether.spi.checksums.TrustedChecksumsSource.WritergetTrustedArtifactChecksumsWriter(org.eclipse.aether.RepositorySystemSession session) This implementation will call into underlying code only if enabled.protected booleanisEnabled(org.eclipse.aether.RepositorySystemSession session) Returnstrueif session configuration marks this instance as enabled.
-
Field Details
-
NAME
- See Also:
-
CONFIG_PROP_ENABLED
Is checksum source enabled?- See Also:
- Sourced from:
RepositorySystemSession.getConfigProperties()- Value type:
Boolean- Default value:
- false
-
CONFIG_PROP_BASEDIR
The basedir where checksums are. If relative, is resolved from local repository root.- See Also:
- Sourced from:
RepositorySystemSession.getConfigProperties()- Value type:
String- Default value:
LOCAL_REPO_PREFIX_DIR
-
LOCAL_REPO_PREFIX_DIR
- See Also:
-
CONFIG_PROP_ORIGIN_AWARE
Is source origin aware?- See Also:
- Sourced from:
RepositorySystemSession.getConfigProperties()- Value type:
Boolean- Default value:
- true
-
CHECKSUMS_FILE_PREFIX
- See Also:
-
-
Constructor Details
-
SummaryFileTrustedChecksumsSource
@Inject public SummaryFileTrustedChecksumsSource(LocalPathComposer localPathComposer, RepositorySystemLifecycle repositorySystemLifecycle, org.eclipse.aether.spi.io.PathProcessor pathProcessor)
-
-
Method Details
-
isEnabled
Returnstrueif session configuration marks this instance as enabled.Default value is
false. -
doGetTrustedArtifactChecksums
protected Map<String,String> doGetTrustedArtifactChecksums(org.eclipse.aether.RepositorySystemSession session, org.eclipse.aether.artifact.Artifact artifact, org.eclipse.aether.repository.ArtifactRepository artifactRepository, List<org.eclipse.aether.spi.connector.checksum.ChecksumAlgorithmFactory> checksumAlgorithmFactories) Implementors MUST NOT returnnullat this point, as this source is enabled. -
doGetTrustedArtifactChecksumsWriter
protected org.eclipse.aether.spi.checksums.TrustedChecksumsSource.Writer doGetTrustedArtifactChecksumsWriter(org.eclipse.aether.RepositorySystemSession session) Implementors may override this method and returnTrustedChecksumsSource.Writerinstance. -
getTrustedArtifactChecksums
public Map<String,String> getTrustedArtifactChecksums(org.eclipse.aether.RepositorySystemSession session, org.eclipse.aether.artifact.Artifact artifact, org.eclipse.aether.repository.ArtifactRepository artifactRepository, List<org.eclipse.aether.spi.connector.checksum.ChecksumAlgorithmFactory> checksumAlgorithmFactories) This implementation will call into underlying code only if enabled, and will enforce non-nullreturn value. In worst case, empty map should be returned, meaning "no trusted checksums available".- Specified by:
getTrustedArtifactChecksumsin interfaceorg.eclipse.aether.spi.checksums.TrustedChecksumsSource
-
getTrustedArtifactChecksumsWriter
public org.eclipse.aether.spi.checksums.TrustedChecksumsSource.Writer getTrustedArtifactChecksumsWriter(org.eclipse.aether.RepositorySystemSession session) This implementation will call into underlying code only if enabled. Underlying implementation may still choose to returnnull.- Specified by:
getTrustedArtifactChecksumsWriterin interfaceorg.eclipse.aether.spi.checksums.TrustedChecksumsSource
-
getBasedir
protected Path getBasedir(org.eclipse.aether.RepositorySystemSession session, String defaultValue, String configPropKey, boolean mayCreate) Uses utilityDirectoryUtils.resolveDirectory(RepositorySystemSession, String, String, boolean)to calculate (and maybe create) basedir for this implementation, never returnsnull. The returnedPathmay not exist, if invoked withmayCreatebeingfalse.Default value is
${LOCAL_REPOSITORY}/.checksums.- Returns:
- The
Pathof basedir, nevernull.
-