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