View Javadoc

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   * Represents the settings for a {@link MemcachedVCacheService}.
19   * They are created using the {@link MemcachedVCacheServiceSettingsBuilder},
20   * which you should consult for the description of each property.
21   *
22   * @since 1.3.0
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 }