1 package org.eclipse.aether.internal.impl.synccontext;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.util.Objects;
23
24 import javax.annotation.PreDestroy;
25 import javax.inject.Inject;
26 import javax.inject.Named;
27 import javax.inject.Singleton;
28
29 import org.eclipse.aether.RepositorySystemSession;
30 import org.eclipse.aether.SyncContext;
31 import org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactoryAdapter;
32 import org.eclipse.aether.internal.impl.synccontext.named.NamedLockFactorySelector;
33 import org.eclipse.aether.spi.locator.Service;
34 import org.eclipse.aether.spi.locator.ServiceLocator;
35 import org.eclipse.aether.spi.synccontext.SyncContextFactory;
36
37 import static java.util.Objects.requireNonNull;
38
39
40
41
42 @Singleton
43 @Named
44 public final class DefaultSyncContextFactory
45 implements SyncContextFactory, Service
46 {
47 private NamedLockFactoryAdapter namedLockFactoryAdapter;
48
49
50
51
52 @Inject
53 public DefaultSyncContextFactory( final NamedLockFactorySelector selector )
54 {
55 this.namedLockFactoryAdapter = new NamedLockFactoryAdapter(
56 selector.getSelectedNameMapper(),
57 selector.getSelectedNamedLockFactory()
58 );
59 }
60
61 public DefaultSyncContextFactory()
62 {
63
64 }
65
66 @Override
67 public void initService( final ServiceLocator locator )
68 {
69 NamedLockFactorySelector selector = Objects.requireNonNull(
70 locator.getService( NamedLockFactorySelector.class ) );
71 this.namedLockFactoryAdapter = new NamedLockFactoryAdapter(
72 selector.getSelectedNameMapper(),
73 selector.getSelectedNamedLockFactory()
74 );
75 }
76
77 @Override
78 public SyncContext newInstance( final RepositorySystemSession session, final boolean shared )
79 {
80 requireNonNull( session, "session cannot be null" );
81 return namedLockFactoryAdapter.newInstance( session, shared );
82 }
83
84 @PreDestroy
85 public void shutdown()
86 {
87 namedLockFactoryAdapter.shutdown();
88 }
89 }