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.spi.locator.Service;
33 import org.eclipse.aether.spi.locator.ServiceLocator;
34 import org.eclipse.aether.spi.synccontext.SyncContextFactory;
35
36
37
38
39 @Singleton
40 @Named
41 public final class DefaultSyncContextFactory
42 implements SyncContextFactory, Service
43 {
44 private NamedLockFactoryAdapter namedLockFactoryAdapter;
45
46
47
48
49 @Inject
50 public DefaultSyncContextFactory( final NamedLockFactorySelector selector )
51 {
52 this.namedLockFactoryAdapter = new NamedLockFactoryAdapter(
53 selector.getSelectedNameMapper(),
54 selector.getSelectedNamedLockFactory(),
55 NamedLockFactorySelector.TIME,
56 NamedLockFactorySelector.TIME_UNIT
57 );
58 }
59
60 public DefaultSyncContextFactory()
61 {
62
63 }
64
65 @Override
66 public void initService( final ServiceLocator locator )
67 {
68 NamedLockFactorySelector selector = Objects.requireNonNull(
69 locator.getService( NamedLockFactorySelector.class ) );
70 this.namedLockFactoryAdapter = new NamedLockFactoryAdapter(
71 selector.getSelectedNameMapper(),
72 selector.getSelectedNamedLockFactory(),
73 NamedLockFactorySelector.TIME,
74 NamedLockFactorySelector.TIME_UNIT
75 );
76 }
77
78 @Override
79 public SyncContext newInstance( final RepositorySystemSession session, final boolean shared )
80 {
81 return namedLockFactoryAdapter.newInstance( session, shared );
82 }
83
84 @PreDestroy
85 public void shutdown()
86 {
87 namedLockFactoryAdapter.shutdown();
88 }
89 }