1 package com.atlassian.vcache.internal.memcached;
2
3 import com.atlassian.vcache.internal.BegunTransactionalActivityHandler;
4 import com.atlassian.vcache.internal.RequestContext;
5 import com.atlassian.vcache.internal.VCacheCreationHandler;
6 import com.atlassian.vcache.internal.VCacheSettingsDefaultsProvider;
7 import com.atlassian.vcache.internal.core.ExternalCacheKeyGenerator;
8 import com.atlassian.vcache.internal.core.metrics.MetricsCollector;
9 import net.spy.memcached.MemcachedClientIF;
10
11 import java.time.Duration;
12 import java.util.function.Function;
13 import java.util.function.Supplier;
14
15 import static java.util.Objects.requireNonNull;
16
17
18
19
20
21
22
23
24 public class MemcachedVCacheServiceSettings {
25 private final Supplier<MemcachedClientIF> clientSupplier;
26 private final Supplier<RequestContext> contextSupplier;
27 private final VCacheSettingsDefaultsProvider defaultsProvider;
28 private final VCacheCreationHandler creationHandler;
29 private final MetricsCollector metricsCollector;
30 private final ExternalCacheKeyGenerator externalCacheKeyGenerator;
31 private final BegunTransactionalActivityHandler begunTransactionalActivityHandler;
32 private final Function<String, Boolean> dontExternaliseCache;
33 private final boolean serializationHack;
34 private final Duration lockTimeout;
35 private Supplier<RequestContext> workContextContextSupplier;
36
37 MemcachedVCacheServiceSettings(Supplier<MemcachedClientIF> clientSupplier,
38 Supplier<RequestContext> contextSupplier,
39 Supplier<RequestContext> workContextContextSupplier,
40 VCacheSettingsDefaultsProvider defaultsProvider,
41 VCacheCreationHandler creationHandler,
42 MetricsCollector metricsCollector,
43 ExternalCacheKeyGenerator externalCacheKeyGenerator,
44 BegunTransactionalActivityHandler begunTransactionalActivityHandler,
45 Function<String, Boolean> dontExternaliseCache,
46 boolean serializationHack,
47 Duration lockTimeout) {
48 this.clientSupplier = requireNonNull(clientSupplier);
49 this.contextSupplier = requireNonNull(contextSupplier);
50 this.workContextContextSupplier = requireNonNull(workContextContextSupplier);
51 this.defaultsProvider = requireNonNull(defaultsProvider);
52 this.creationHandler = requireNonNull(creationHandler);
53 this.metricsCollector = requireNonNull(metricsCollector);
54 this.externalCacheKeyGenerator = requireNonNull(externalCacheKeyGenerator);
55 this.begunTransactionalActivityHandler = requireNonNull(begunTransactionalActivityHandler);
56 this.dontExternaliseCache = requireNonNull(dontExternaliseCache);
57 this.serializationHack = serializationHack;
58 this.lockTimeout = requireNonNull(lockTimeout);
59 }
60
61 public Supplier<MemcachedClientIF> getClientSupplier() {
62 return clientSupplier;
63 }
64
65 public Supplier<RequestContext> getContextSupplier() {
66 return contextSupplier;
67 }
68
69 public VCacheSettingsDefaultsProvider getDefaultsProvider() {
70 return defaultsProvider;
71 }
72
73 public VCacheCreationHandler getCreationHandler() {
74 return creationHandler;
75 }
76
77 public MetricsCollector getMetricsCollector() {
78 return metricsCollector;
79 }
80
81 public ExternalCacheKeyGenerator getExternalCacheKeyGenerator() {
82 return externalCacheKeyGenerator;
83 }
84
85 public BegunTransactionalActivityHandler getBegunTransactionalActivityHandler() {
86 return begunTransactionalActivityHandler;
87 }
88
89 public Function<String, Boolean> getDontExternaliseCache() {
90 return dontExternaliseCache;
91 }
92
93 public Supplier<RequestContext> getWorkContextContextSupplier() {
94 return workContextContextSupplier;
95 }
96
97 public boolean isSerializationHack() {
98 return serializationHack;
99 }
100
101 public Duration getLockTimeout() {
102 return lockTimeout;
103 }
104 }