View Javadoc

1   package com.atlassian.vcache.internal.core;
2   
3   import com.atlassian.vcache.internal.RequestContext;
4   import com.atlassian.workcontext.api.ImmutableWorkContextReference;
5   
6   import java.util.function.Supplier;
7   
8   import static java.util.Objects.requireNonNull;
9   
10  /**
11   * Implementation of {@link Supplier} for {@link RequestContext} that provides a structure that will
12   * be available and safe to use in a WorkContext.
13   * <p>
14   * @since 1.6.0
15   */
16  public class WorkContextRequestContextSupplier implements Supplier<RequestContext> {
17      private ImmutableWorkContextReference<RequestContext> requestContextSupplier;
18  
19      /**
20       * Build the {@link Supplier} and provide it with a supplier for the partitionIdentifier.
21       *
22       * @param partitionIdentifier A {@link Supplier} that provides the current partitionIdentifier.
23       */
24      public WorkContextRequestContextSupplier(Supplier<String> partitionIdentifier) {
25          requireNonNull(partitionIdentifier);
26          this.requestContextSupplier = new ImmutableWorkContextReference<>(() -> new DefaultRequestContext(partitionIdentifier.get()));
27      }
28  
29      @Override
30      public RequestContext get() {
31          return requestContextSupplier.get();
32      }
33  }