Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,24 @@ public class DefaultRepositorySystemSessionFactory

private static final String RESOLVER_MAX_PRIORITY = String.valueOf( Float.MAX_VALUE );

private static final String MAVEN_RESOLVER_LOCKING_KEY = "maven.resolver.locking";

private static final String MAVEN_RESOLVER_LOCKING_DEFAULT = "default";

private static final String MAVEN_RESOLVER_LOCKING_LOCAL = "local";

private static final String MAVEN_RESOLVER_LOCKING_FILE = "file";

private static final String MAVEN_RESOLVER_LOCKING_HAZELCAST = "hazelcast";

private static final String MAVEN_RESOLVER_LOCKING_REDISSON = "redisson";

private static final String MAVEN_RESOLVER_LOCKING_AUTO = "auto";

private static final String MAVEN_RESOLVER_LOCKING_LOCK_FACTORY_KEY = "aether.syncContext.named.factory";

private static final String MAVEN_RESOLVER_LOCKING_NAME_MAPPER_KEY = "aether.syncContext.named.nameMapper";

@Inject
private Logger logger;

Expand Down Expand Up @@ -282,6 +300,35 @@ else if ( !MAVEN_RESOLVER_TRANSPORT_AUTO.equals( transport ) )
+ MAVEN_RESOLVER_TRANSPORT_NATIVE + ", " + MAVEN_RESOLVER_TRANSPORT_AUTO );
}

Object locking = configProps.getOrDefault( MAVEN_RESOLVER_LOCKING_KEY, MAVEN_RESOLVER_LOCKING_DEFAULT );
if ( MAVEN_RESOLVER_LOCKING_DEFAULT.equals( locking ) || MAVEN_RESOLVER_LOCKING_LOCAL.equals( locking ) )
{
// The "default" mode (user did not set anything) is same as "local" mode
configProps.put( MAVEN_RESOLVER_LOCKING_LOCK_FACTORY_KEY, "rwlock-local" );
configProps.put( MAVEN_RESOLVER_LOCKING_NAME_MAPPER_KEY, "gav" );
}
else if ( MAVEN_RESOLVER_LOCKING_FILE.equals( locking ) )
{
configProps.put( MAVEN_RESOLVER_LOCKING_LOCK_FACTORY_KEY, "file-lock" );
configProps.put( MAVEN_RESOLVER_LOCKING_NAME_MAPPER_KEY, "file-gav" );
}
else if ( MAVEN_RESOLVER_LOCKING_HAZELCAST.equals( locking ) )
{
configProps.put( MAVEN_RESOLVER_LOCKING_LOCK_FACTORY_KEY, "semaphore-hazelcast-client" );
configProps.put( MAVEN_RESOLVER_LOCKING_NAME_MAPPER_KEY, "discriminating" );
}
else if ( MAVEN_RESOLVER_LOCKING_REDISSON.equals( locking ) )
{
configProps.put( MAVEN_RESOLVER_LOCKING_LOCK_FACTORY_KEY, "rwlock-redisson" );
configProps.put( MAVEN_RESOLVER_LOCKING_NAME_MAPPER_KEY, "discriminating" );
}
else if ( !MAVEN_RESOLVER_LOCKING_AUTO.equals( locking ) )
{
throw new IllegalArgumentException( "Unknown resolver locking mode '" + transport
+ "'. Supported locking modes are: " + MAVEN_RESOLVER_LOCKING_FILE + ", "
+ MAVEN_RESOLVER_LOCKING_LOCAL + ", " + MAVEN_RESOLVER_LOCKING_AUTO );
}

session.setTransferListener( request.getTransferListener() );

session.setRepositoryListener( eventSpyDispatcher.chainListener( new LoggingRepositoryListener( logger ) ) );
Expand Down