1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.internal.impl.synccontext;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import org.eclipse.aether.RepositorySystemSession;
26 import org.eclipse.aether.SyncContext;
27 import org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter;
28 import org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapterFactory;
29 import org.eclipse.aether.spi.synccontext.SyncContextFactory;
30
31 import static java.util.Objects.requireNonNull;
32
33
34
35
36
37
38
39 @Singleton
40 @Named
41 public final class DefaultSyncContextFactory implements SyncContextFactory {
42 private static final String ADAPTER_KEY = DefaultSyncContextFactory.class.getName() + ".adapter";
43
44 private final NamedLockFactoryAdapterFactory namedLockFactoryAdapterFactory;
45
46
47
48
49 @Inject
50 public DefaultSyncContextFactory(final NamedLockFactoryAdapterFactory namedLockFactoryAdapterFactory) {
51 this.namedLockFactoryAdapterFactory = requireNonNull(namedLockFactoryAdapterFactory);
52 }
53
54 @Override
55 public SyncContext newInstance(final RepositorySystemSession session, final boolean shared) {
56 requireNonNull(session, "session cannot be null");
57 NamedLockFactoryAdapter adapter = (NamedLockFactoryAdapter) session.getData()
58 .computeIfAbsent(ADAPTER_KEY, () -> namedLockFactoryAdapterFactory.getAdapter(session));
59 return adapter.newInstance(session, shared);
60 }
61 }