Class PrefixesRemoteRepositoryFilterSource
java.lang.Object
org.eclipse.aether.internal.impl.filter.RemoteRepositoryFilterSourceSupport
org.eclipse.aether.internal.impl.filter.PrefixesRemoteRepositoryFilterSource
- All Implemented Interfaces:
RemoteRepositoryFilterSource
@Singleton
@Named("prefixes")
public final class PrefixesRemoteRepositoryFilterSource
extends RemoteRepositoryFilterSourceSupport
Remote repository filter source filtering on path prefixes. It is backed by a file that lists all allowed path
prefixes from remote repository. Artifact that layout converted path (using remote repository layout) results in
path with no corresponding prefix present in this file is filtered out.
The file can be authored manually: format is one prefix per line, comments starting with "#" (hash) and empty lines for structuring are supported, The "/" (slash) character is used as file separator. Some remote repositories and MRMs publish these kind of files, they can be downloaded from corresponding URLs.
The prefix file is expected on path "${basedir}/prefixes-${repository.id}.txt".
The prefixes file is once loaded and cached, so in-flight prefixes file change during component existence are not noticed.
Examples of published prefix files:
- Central: prefixes.txt
- Apache Releases: prefixes.txt
- Since:
- 1.9.0
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static class
private class
Nested classes/interfaces inherited from class org.eclipse.aether.internal.impl.filter.RemoteRepositoryFilterSourceSupport
RemoteRepositoryFilterSourceSupport.SimpleResult
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ConcurrentHashMap
<RemoteRepository, RepositoryLayout> private static final org.slf4j.Logger
static final String
private static final PrefixesRemoteRepositoryFilterSource.Node
private static final RemoteRepositoryFilter.Result
(package private) static final String
(package private) static final String
private final RepositoryLayoutProvider
Fields inherited from class org.eclipse.aether.internal.impl.filter.RemoteRepositoryFilterSourceSupport
LOCAL_REPO_PREFIX_DIR
-
Constructor Summary
ConstructorsConstructorDescriptionPrefixesRemoteRepositoryFilterSource
(RepositoryLayoutProvider repositoryLayoutProvider) -
Method Summary
Modifier and TypeMethodDescriptionprivate RepositoryLayout
cacheLayout
(RepositorySystemSession session, RemoteRepository remoteRepository) Caches layout instances for remote repository.cacheNode
(Path basedir, RemoteRepository remoteRepository) Caches prefixes instances for remote repository.elementsOf
(String path) Provides the filter instance for given session, ornull
if this instance wants to abstain from participating in filtering.loadRepositoryPrefixes
(Path baseDir, RemoteRepository remoteRepository) Loads prefixes file and preprocesses it intoPrefixesRemoteRepositoryFilterSource.Node
instance.Methods inherited from class org.eclipse.aether.internal.impl.filter.RemoteRepositoryFilterSourceSupport
configPropKey, getBasedir, isEnabled
-
Field Details
-
NAME
- See Also:
-
PREFIXES_FILE_PREFIX
- See Also:
-
PREFIXES_FILE_SUFFIX
- See Also:
-
LOGGER
private static final org.slf4j.Logger LOGGER -
repositoryLayoutProvider
-
prefixes
private final ConcurrentHashMap<RemoteRepository,PrefixesRemoteRepositoryFilterSource.Node> prefixes -
layouts
-
NOT_PRESENT_NODE
-
NOT_PRESENT_RESULT
-
-
Constructor Details
-
PrefixesRemoteRepositoryFilterSource
@Inject public PrefixesRemoteRepositoryFilterSource(RepositoryLayoutProvider repositoryLayoutProvider)
-
-
Method Details
-
getRemoteRepositoryFilter
Description copied from interface:RemoteRepositoryFilterSource
Provides the filter instance for given session, ornull
if this instance wants to abstain from participating in filtering.- Returns:
- The filter for given session or
null
.
-
cacheLayout
private RepositoryLayout cacheLayout(RepositorySystemSession session, RemoteRepository remoteRepository) Caches layout instances for remote repository. In case of unknown layout it returnsnull
.- Returns:
- the layout instance of
null
if layout not supported.
-
cacheNode
private PrefixesRemoteRepositoryFilterSource.Node cacheNode(Path basedir, RemoteRepository remoteRepository) Caches prefixes instances for remote repository. -
loadRepositoryPrefixes
private PrefixesRemoteRepositoryFilterSource.Node loadRepositoryPrefixes(Path baseDir, RemoteRepository remoteRepository) Loads prefixes file and preprocesses it intoPrefixesRemoteRepositoryFilterSource.Node
instance. -
elementsOf
-