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 Classes Modifier and Type Class Description private static class
PrefixesRemoteRepositoryFilterSource.Node
private class
PrefixesRemoteRepositoryFilterSource.PrefixesFilter
-
Nested classes/interfaces inherited from class org.eclipse.aether.internal.impl.filter.RemoteRepositoryFilterSourceSupport
RemoteRepositoryFilterSourceSupport.SimpleResult
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.concurrent.ConcurrentHashMap<RemoteRepository,RepositoryLayout>
layouts
private static org.slf4j.Logger
LOGGER
static java.lang.String
NAME
private static PrefixesRemoteRepositoryFilterSource.Node
NOT_PRESENT_NODE
private static RemoteRepositoryFilter.Result
NOT_PRESENT_RESULT
private java.util.concurrent.ConcurrentHashMap<RemoteRepository,PrefixesRemoteRepositoryFilterSource.Node>
prefixes
(package private) static java.lang.String
PREFIXES_FILE_PREFIX
(package private) static java.lang.String
PREFIXES_FILE_SUFFIX
private RepositoryLayoutProvider
repositoryLayoutProvider
-
Fields inherited from class org.eclipse.aether.internal.impl.filter.RemoteRepositoryFilterSourceSupport
LOCAL_REPO_PREFIX_DIR
-
-
Constructor Summary
Constructors Constructor Description PrefixesRemoteRepositoryFilterSource(RepositoryLayoutProvider repositoryLayoutProvider)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private RepositoryLayout
cacheLayout(RepositorySystemSession session, RemoteRepository remoteRepository)
Caches layout instances for remote repository.private PrefixesRemoteRepositoryFilterSource.Node
cacheNode(java.nio.file.Path basedir, RemoteRepository remoteRepository)
Caches prefixes instances for remote repository.private static java.util.List<java.lang.String>
elementsOf(java.lang.String path)
RemoteRepositoryFilter
getRemoteRepositoryFilter(RepositorySystemSession session)
Provides the filter instance for given session, ornull
if this instance wants to abstain from participating in filtering.private PrefixesRemoteRepositoryFilterSource.Node
loadRepositoryPrefixes(java.nio.file.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 Detail
-
NAME
public static final java.lang.String NAME
- See Also:
- Constant Field Values
-
PREFIXES_FILE_PREFIX
static final java.lang.String PREFIXES_FILE_PREFIX
- See Also:
- Constant Field Values
-
PREFIXES_FILE_SUFFIX
static final java.lang.String PREFIXES_FILE_SUFFIX
- See Also:
- Constant Field Values
-
LOGGER
private static final org.slf4j.Logger LOGGER
-
repositoryLayoutProvider
private final RepositoryLayoutProvider repositoryLayoutProvider
-
prefixes
private final java.util.concurrent.ConcurrentHashMap<RemoteRepository,PrefixesRemoteRepositoryFilterSource.Node> prefixes
-
layouts
private final java.util.concurrent.ConcurrentHashMap<RemoteRepository,RepositoryLayout> layouts
-
NOT_PRESENT_NODE
private static final PrefixesRemoteRepositoryFilterSource.Node NOT_PRESENT_NODE
-
NOT_PRESENT_RESULT
private static final RemoteRepositoryFilter.Result NOT_PRESENT_RESULT
-
-
Constructor Detail
-
PrefixesRemoteRepositoryFilterSource
@Inject public PrefixesRemoteRepositoryFilterSource(RepositoryLayoutProvider repositoryLayoutProvider)
-
-
Method Detail
-
getRemoteRepositoryFilter
public RemoteRepositoryFilter getRemoteRepositoryFilter(RepositorySystemSession session)
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(java.nio.file.Path basedir, RemoteRepository remoteRepository)
Caches prefixes instances for remote repository.
-
loadRepositoryPrefixes
private PrefixesRemoteRepositoryFilterSource.Node loadRepositoryPrefixes(java.nio.file.Path baseDir, RemoteRepository remoteRepository)
Loads prefixes file and preprocesses it intoPrefixesRemoteRepositoryFilterSource.Node
instance.
-
elementsOf
private static java.util.List<java.lang.String> elementsOf(java.lang.String path)
-
-