1 package org.eclipse.aether.internal.impl.synccontext.named;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.eclipse.aether.named.NamedLockFactory;
23
24 import java.util.Map;
25
26
27
28
29
30
31
32 public abstract class NamedLockFactorySelectorSupport
33 implements NamedLockFactorySelector
34 {
35 public static final String FACTORY_KEY = "aether.syncContext.named.factory";
36
37 public static final String NAME_MAPPER_KEY = "aether.syncContext.named.nameMapper";
38
39 private final NamedLockFactory namedLockFactory;
40
41 private final NameMapper nameMapper;
42
43 public NamedLockFactorySelectorSupport( final Map<String, NamedLockFactory> factories,
44 final String defaultFactoryName,
45 final Map<String, NameMapper> nameMappers,
46 final String defaultNameMapperName )
47 {
48 this.namedLockFactory = selectNamedLockFactory( factories, getFactoryName( defaultFactoryName ) );
49 this.nameMapper = selectNameMapper( nameMappers, getNameMapperName( defaultNameMapperName ) );
50 }
51
52
53
54
55 @Override
56 public NamedLockFactory getSelectedNamedLockFactory()
57 {
58 return namedLockFactory;
59 }
60
61
62
63
64 @Override
65 public NameMapper getSelectedNameMapper()
66 {
67 return nameMapper;
68 }
69
70
71
72
73 protected String getFactoryName( final String defaultFactoryName )
74 {
75 return System.getProperty( FACTORY_KEY, defaultFactoryName );
76 }
77
78
79
80
81 protected String getNameMapperName( final String defaultNameMapperName )
82 {
83 return System.getProperty( NAME_MAPPER_KEY, defaultNameMapperName );
84 }
85
86 private NamedLockFactory selectNamedLockFactory( final Map<String, NamedLockFactory> factories,
87 final String factoryName )
88 {
89 NamedLockFactory factory = factories.get( factoryName );
90 if ( factory == null )
91 {
92 throw new IllegalArgumentException( "Unknown NamedLockFactory name: " + factoryName
93 + ", known ones: " + factories.keySet() );
94 }
95 return factory;
96 }
97
98 private NameMapper selectNameMapper( final Map<String, NameMapper> nameMappers,
99 final String mapperName )
100 {
101 NameMapper nameMapper = nameMappers.get( mapperName );
102 if ( nameMapper == null )
103 {
104 throw new IllegalArgumentException( "Unknown NameMapper name: " + mapperName
105 + ", known ones: " + nameMappers.keySet() );
106 }
107 return nameMapper;
108 }
109 }