@Test @UseDataProvider("providevalidRetentionExtensionConfig") public void validRentionExtensionConfig(final long currentRetention, final RetentionConfig rc) { final OGModule module = new OGModule(this.config); module.provideTestRetentionExtensionConfig(currentRetention, rc); }
public Long provideTestRetentionExtensionConfig(final long currentRetention, final RetentionConfig rc) { final Map<String, String> context = Maps.newHashMap(); context.put(Context.X_OG_OBJECT_RETENTION, Long.toString(currentRetention)); if (rc.expiry != null) { final SelectionConfig<RetentionConfig> rcSelection = new SelectionConfig<RetentionConfig>(); rcSelection.choices.add(new ChoiceConfig<RetentionConfig>(rc)); final Function<Map<String, String>, Long> retentionFunction = this.provideRetentionExtension(rcSelection); return retentionFunction.apply(context); } else { return Long.parseLong(context.get(Context.X_OG_OBJECT_RETENTION)); } }
OGModule extends AbstractModule { public Long provideTestRetentionExtensionConfig(final long currentRetention, final RetentionConfig rc) { final Map<String, String> context = Maps.newHashMap(); context.put(Context.X_OG_OBJECT_RETENTION, Long.toString(currentRetention)); if (rc.expiry != null) { final SelectionConfig<RetentionConfig> rcSelection = new SelectionConfig<RetentionConfig>(); rcSelection.choices.add(new ChoiceConfig<RetentionConfig>(rc)); final Function<Map<String, String>, Long> retentionFunction = this.provideRetentionExtension(rcSelection); return retentionFunction.apply(context); } else { return Long.parseLong(context.get(Context.X_OG_OBJECT_RETENTION)); } } }
OGModule extends AbstractModule { public Long provideTestRetentionExtensionConfig(final long currentRetention, final RetentionConfig rc) { final Map<String, String> context = Maps.newHashMap(); context.put(Context.X_OG_OBJECT_RETENTION, Long.toString(currentRetention)); if (rc.expiry != null) { final SelectionConfig<RetentionConfig> rcSelection = new SelectionConfig<RetentionConfig>(); rcSelection.choices.add(new ChoiceConfig<RetentionConfig>(rc)); final Function<Map<String, String>, Long> retentionFunction = this.provideRetentionExtension(rcSelection); return retentionFunction.apply(context); } else { return Long.parseLong(context.get(Context.X_OG_OBJECT_RETENTION)); } } OGModule(final OGConfig config); }
OGModule extends AbstractModule { public Long provideTestRetentionExtensionConfig(final long currentRetention, final RetentionConfig rc) { final Map<String, String> context = Maps.newHashMap(); context.put(Context.X_OG_OBJECT_RETENTION, Long.toString(currentRetention)); if (rc.expiry != null) { final SelectionConfig<RetentionConfig> rcSelection = new SelectionConfig<RetentionConfig>(); rcSelection.choices.add(new ChoiceConfig<RetentionConfig>(rc)); final Function<Map<String, String>, Long> retentionFunction = this.provideRetentionExtension(rcSelection); return retentionFunction.apply(context); } else { return Long.parseLong(context.get(Context.X_OG_OBJECT_RETENTION)); } } OGModule(final OGConfig config); @Provides @Singleton List<TestCondition> provideTestConditions(final LoadTest test, final EventBus eventBus,
      final Statistics stats, final ConcurrencyConfig concurrency,
      final StoppingConditionsConfig stoppingConditionsConfig,
      final FailingConditionsConfig failingConditionsConfig); Long provideTestRetentionConfig(final RetentionConfig rc); Long provideTestRetentionExtensionConfig(final long currentRetention, final RetentionConfig rc); @Provides @Singleton @Named("request.id") Function<Map<String, String>, String> provideIdSupplier(); @Provides @Singleton @Named("host") Function<Map<String, String>, String> provideHost(); @Provides @Singleton @WriteHost Function<Map<String, String>, String> provideWriteHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @OverwriteHost Function<Map<String, String>, String> provideOverwriteHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @ReadHost Function<Map<String, String>, String> provideReadHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @MetadataHost Function<Map<String, String>, String> provideMetadataHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @DeleteHost Function<Map<String, String>, String> provideDeleteHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @ListHost Function<Map<String, String>, String> provideListHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @ContainerListHost Function<Map<String, String>, String> provideContainerListHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @ContainerCreateHost Function<Map<String, String>, String> provideContainerCreateHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @MultipartWriteHost Function<Map<String, String>, String> provideMultipartWriteHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @Named("uri.root") String provideUriRoot(final Api api); @Provides @Singleton @Named("write.container") Function<Map<String, String>, String> provideWriteContainer(); @Provides @Singleton @Named("writeCopy.container") Function<Map<String, String>, String> provideWriteCopyContainer(); @Provides @Singleton @Named("writeCopy.sourceContainer") Function<Map<String, String>, String> provideWriteCopySourceContainer(); @Provides @Singleton @Named("overwrite.container") Function<Map<String, String>, String> provideOverwriteContainer(); @Provides @Singleton @Named("read.container") Function<Map<String, String>, String> provideReadContainer(); @Provides @Singleton @Named("read.staticWebsiteVirtualHostSuffix") Function<Map<String, String>, String> provideReadWebsiteContext(); @Provides @Singleton @Named("metadata.container") Function<Map<String, String>, String> provideMetadataContainer(); @Provides @Singleton @Named("delete.container") Function<Map<String, String>, String> provideDeleteContainer(); @Provides @Singleton @Named("containerCreate.container") Function<Map<String, String>, String> provideContainerCreateContainer(); @Provides @Singleton @Named("multipartWrite.container") Function<Map<String, String>, String> provideMultipartWriteContainer(); @Provides @Singleton @Named("objectRestore.container") Function<Map<String, String>, String> provideObjectRestoreContainer(); @Provides @Singleton @Named("putContainerLifecycle.container") Function<Map<String, String>, String> providePutContainerLifecycleContainer(); @Provides @Singleton @Named("getContainerLifecycle.container") Function<Map<String, String>, String> provideGetContainerLifecycleContainer(); @Provides @Singleton @Named("deleteContainerLifecycle.container") Function<Map<String, String>, String> provideDeleteContainerLifecycleContainer(); @Provides @Singleton @Named("putContainerProtection.container") Function<Map<String, String>, String> providePutContainerProtectionContainer(); @Provides @Singleton @Named("getContainerProtection.container") Function<Map<String, String>, String> provideGetContainerProtectionContainer(); Function<Map<String, String>, String> provideContainer(
      final ContainerConfig containerConfig); Function<Map<String, String>, String> provideTargetContainer(
          final ContainerConfig containerConfig); Function<Map<String, String>, String> provideSourceContainer(
          final ContainerConfig containerConfig); @Provides @Singleton @Named("objectRestore.objectRestorePeriod") Function<Map<String, String>, String> provideObjectRestorePeriod(final OperationConfig config); @Provides @Singleton @Named("putContainerLifecycle.archiveTransitionPeriod") Function<Map<String, String>, String> provideArchiveTransitionPeriod(final OperationConfig config); @Provides @Singleton @Named("multipartWrite.partSize") Function<Map<String, String>, Long> provideMultipartWritePartSize(); @Provides @Singleton @Named("multipartWrite.partsPerSession") Function<Map<String, String>, Integer> provideMultipartWritePartsPerSession(); @Provides @Singleton @WriteObjectName Function<Map<String, String>, String> provideWriteObjectName(final Api api); @Provides @Singleton @OverwriteObjectName Function<Map<String, String>, String> provideOverwriteObjectName(); @Provides @Singleton @ReadObjectName Function<Map<String, String>, String> provideReadObjectName(); @Provides @Singleton @SourceReadObjectName Function<Map<String, String>, String> provideSSEReadObjectName(); @Provides @Singleton @MetadataObjectName Function<Map<String, String>, String> provideMetadataObjectName(); @Provides @Singleton @DeleteObjectName Function<Map<String, String>, String> provideDeleteObjectName(); @Provides @Singleton @MultipartWriteObjectName Function<Map<String, String>, String> provideMultipartWriteObjectName(); @Provides @Singleton List<AbstractObjectNameConsumer> provideObjectNameConsumers(
      final ObjectManager objectManager, final EventBus eventBus); @Provides @Singleton @WriteHeaders Map<String, Function<Map<String, String>, String>> provideWriteHeaders(); @Provides @Singleton @WriteCopyHeaders Map<String, Function<Map<String, String>, String>> provideWriteCopyHeaders(); @Provides @Singleton @OverwriteHeaders Map<String, Function<Map<String, String>, String>> provideOverwriteHeaders(); @Provides @Singleton @ReadHeaders Map<String, Function<Map<String, String>, String>> provideReadHeaders(); @Provides @Singleton @MetadataHeaders Map<String, Function<Map<String, String>, String>> provideMetadataHeaders(); @Provides @Singleton @DeleteHeaders Map<String, Function<Map<String, String>, String>> provideDeleteHeaders(); @Provides @Singleton @ListHeaders Map<String, Function<Map<String, String>, String>> provideListHeaders(final Api api); @Provides @Singleton @ContainerListHeaders Map<String, Function<Map<String, String>, String>> provideContainerListHeaders(); @Provides @Singleton @ContainerCreateHeaders Map<String, Function<Map<String, String>, String>> provideContainerCreateHeaders(); @Provides @Singleton @MultipartWriteHeaders Map<String, Function<Map<String, String>, String>> provideMultipartWriteHeaders(); @Provides @Singleton @ObjectRestoreHeaders Map<String, Function<Map<String, String>, String>> provideObjectRestoreHeaders(); @Provides @Singleton @PutContainerLifecycleHeaders Map<String, Function<Map<String, String>, String>> providePutContainerLifecycleHeaders(); @Provides @Singleton @GetContainerLifecycleHeaders Map<String, Function<Map<String, String>, String>> provideGetBucketLifecycleHeaders(); @Provides @Singleton @DeleteContainerLifecycleHeaders Map<String, Function<Map<String, String>, String>> provideDeleteBucketLifecycleHeaders(); @Provides @Singleton @PutContainerProtectionHeaders Map<String, Function<Map<String, String>, String>> providePutContainerProtectionHeaders(); @Provides @Singleton @GetContainerProtectionHeaders Map<String, Function<Map<String, String>, String>> provideGetContainerProtectionHeaders(); @Provides @Singleton @Named("write.context") List<Function<Map<String, String>, String>> provideWriteContext(final Api api); @Provides @Singleton @Named("writeCopy.context") List<Function<Map<String, String>, String>> provideWriteCopyContext(final Api api); @Provides @Singleton @Named("writeCopy.delimiter") Function<Map<String, String>, String> provideWriteCopyDelimiter(final SelectionConfig<ObjectDelimiterConfig> listDelimiterConfig); @Provides @Singleton @Named("api.version") String provideAPIVersion(final Api api); @Provides @Singleton @Named("overwrite.context") List<Function<Map<String, String>, String>> provideOverwriteContext(
      final ObjectManager objectManager); @Provides @Singleton @Named("read.context") List<Function<Map<String, String>, String>> provideReadContext(
      final ObjectManager objectManager); @Provides @Singleton @Named("writeCopySource.context") List<Function<Map<String, String>, String>> provideSSeReadContext(
      final ObjectManager objectManager); @Provides @Named("write_legalhold.context") List<Function<Map<String, String>, String>> provideWriteLegalholdContext(
      final ObjectManager objectManager); @Provides @Named("retention_extension.context") List<Function<Map<String, String>, String>> provideRetentionExtensionContext(
          final ObjectManager objectManager); @Provides @Named("objectRestore.context") List<Function<Map<String, String>, String>> provideObjectRestoreContext(
          final ObjectManager objectManager); @Provides @Singleton @Named("putContainerLifecycle.context") List<Function<Map<String, String>, String>> providePutContainerLifecycleContext(); @Provides @Singleton @Named("getContainerLifecycle.context") List<Function<Map<String, String>, String>> provideGetContainerLifecycleContext(
          final ObjectManager objectManager); @Provides @Singleton @Named("deleteContainerLifecycle.context") List<Function<Map<String, String>, String>> provideDeleteContainerLifecycleContext(
          final ObjectManager objectManager); @Provides @Singleton @Named("putContainerProtection.context") List<Function<Map<String, String>, String>> providePutContainerProtectionContext(); @Provides @Singleton @Named("getContainerProtection.context") List<Function<Map<String, String>, String>> provideGetContainerProtectionContext(
          final ObjectManager objectManager); @Provides @Singleton @Named("metadata.context") List<Function<Map<String, String>, String>> provideMetadataContext(
      final ObjectManager objectManager); @Provides @Singleton @Named("delete.context") List<Function<Map<String, String>, String>> provideDeleteContext(
      final ObjectManager objectManager); @Provides @Singleton @Named("containerList.context") List<Function<Map<String, String>, String>> provideContainerListContext(
      final ObjectManager objectManager); @Provides @Singleton @Named("multiDelete.context") List<Function<Map<String, String>, String>> provideMultiDeleteContext(
          final ObjectManager objectManager); @Provides @Singleton @Named("containerCreate.context") List<Function<Map<String, String>, String>> provideContainerCreateContext(
      final ObjectManager objectManager); @Provides @Singleton @Named("multipartWrite.context") List<Function<Map<String, String>, String>> provideMultipartWriteContext(final Api api); @Provides @Singleton @Named("write.delimiter") Function<Map<String, String>, String> provideListDelimiter(final SelectionConfig<ObjectDelimiterConfig> listDelimiterConfig); @Provides @Singleton @Named("multipartWrite.delimiter") Function<Map<String, String>, String> provideMultipartWritetDelimiter(final SelectionConfig<ObjectDelimiterConfig> listDelimiterConfig); @Provides @Singleton @Named("write.legalHold") Supplier<Function<Map<String, String>, String>> provideLegalHold(); @Provides @Singleton @Named("multipartWrite.legalHold") Supplier<Function<Map<String, String>, String>> provideMultipartLegalHold(); @Provides @Singleton @Named("add.legalHold") Supplier<Function<Map<String, String>, String>> provideAddLegalHold(); @Provides @Singleton @Named("delete.legalHold") Supplier<Function<Map<String, String>, String>> provideDeleteLegalHold(); @Provides @Singleton @Named("delete_legalhold.context") List<Function<Map<String, String>, String>> provideDeleteLegalholdContext(
      final ObjectManager objectManager); @Provides @Singleton Function<Map<String, String>, Body> provideBody(); @Provides @Singleton @WriteBody Function<Map<String, String>, Body> provideWriteBody(); @Provides @Singleton @OverwriteBody Function<Map<String, String>, Body> provideOverwriteBody(); @Provides @Singleton @MultiPartWriteBody Function<Map<String, String>, Body> provideMultiPartWriteBody(); @Provides @Singleton @MultiDeleteBody Function<Map<String, String>, Body> createMultiDeleteBody(final ObjectManager objectManager); @Provides @Singleton @Named("objectfile.location") String provideObjectFileLocation(); @Provides @Singleton @Named("objectfile.name") String provideObjectFileName(final Api api); @Provides @Singleton @Named("objectfile.maxsize") long provideObjectFileMaxSize(); @Provides @Singleton @Named("objectfile.persistfrequency") long provideObjectFilePersistFrequency(); @Provides @Singleton @Named("objectfile.index") Integer provideObjectFileIndex(); @Provides @Singleton Scheduler provideScheduler(final ConcurrencyConfig concurrency, final EventBus eventBus); @Provides @Singleton Client provideClient(final AuthType authType, final Map<AuthType, HttpAuth> authentication,
      final Map<String, ResponseBodyConsumer> responseBodyConsumers); @Provides @Singleton @Named("write") Supplier<Request> provideWrite(
      @Named("request.id") final Function<Map<String, String>, String> id, final Api api,
      final Scheme scheme, @WriteHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("write.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @WriteObjectName final Function<Map<String, String>, String> object,
      @WriteHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("write.context") final List<Function<Map<String, String>, String>> context,
      @WriteBody final Function<Map<String, String>, Body> body,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Named("write.sseCDestination") final boolean encryptDestinationObject,
      @Nullable @Named("write.retention") final Function<Map<String, String>, Long> retention,
      @Nullable @Named("write.legalHold") final Supplier<Function<Map<String, String>, String>> legalHold,
      @Nullable @Named("write.contentMd5") final boolean contentMd5,
      @Nullable @Named("write.delimiter") final Function<Map<String, String>, String> delimiter); @Provides @Singleton @Named("extend_retention") Supplier<Request> provideExtendRetention(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("read.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @Nullable @ReadObjectName final Function<Map<String, String>, String> object,
          @WriteHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("retention_extension.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Nullable @Named("extend.retention") final Function<Map<String, String>, Long> retentionExtension,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("objectRestore") Supplier<Request> provideObjectRestore(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("objectRestore.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @Nullable @ReadObjectName final Function<Map<String, String>, String> object,
          @ObjectRestoreHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("objectRestore.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("putContainerLifecycle") Supplier<Request> providePutContainerLifecycle(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("putContainerLifecycle.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @PutContainerLifecycleHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("putContainerLifecycle.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("putContainerProtection") Supplier<Request> providePutContainerProtection(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("putContainerProtection.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @PutContainerProtectionHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("putContainerProtection.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("getContainerLifecycle") Supplier<Request> provideGetContainerLifecycle(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("getContainerLifecycle.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @GetContainerLifecycleHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("getContainerLifecycle.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("deleteContainerLifecycle") Supplier<Request> provideDeleteContainerLifecycle(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("deleteContainerLifecycle.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @DeleteContainerLifecycleHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("deleteContainerLifecycle.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("getContainerProtection") Supplier<Request> provideGetContainerProtection(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("getContainerProtection.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @GetContainerProtectionHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("getContainerProtection.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("writeCopy") Supplier<Request> provideWriteCopy(
      @Named("request.id") final Function<Map<String, String>, String> id, final Api api,
      final Scheme scheme, @WriteHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("writeCopy.container") final Function<Map<String, String>, String> container,
      @Named("writeCopy.sourceContainer") final Function<Map<String, String>, String> sourceContainer,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @WriteObjectName final Function<Map<String, String>, String> writeObject,
      @Named("writeCopySource.context") final List<Function<Map<String, String>, String>> sseReadContext,
      @Nullable @SourceReadObjectName final Function<Map<String, String>, String> sseSourceReadObject,
      @WriteCopyHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("writeCopy.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Named("writeCopy.sseCSource") final boolean encryptedSourceObject,
      @Named("writeCopy.sseCDestination") final boolean encryptDestinationObject,
      @Nullable @Named("writeCopy.delimiter") final Function<Map<String, String>, String> delimiter); @Provides @Singleton @Named("overwrite") Supplier<Request> provideOverwrite(
      @Named("request.id") final Function<Map<String, String>, String> id, final Api api,
      final Scheme scheme, @OverwriteHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("overwrite.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @OverwriteObjectName final Function<Map<String, String>, String> object,
      @OverwriteHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("overwrite.context") final List<Function<Map<String, String>, String>> context,
      @OverwriteBody final Function<Map<String, String>, Body> body,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Named("overwrite.weight") final double overwriteWeight,
      @Named("overwrite.sseCDestination") final boolean encryptDestinationObject,
      @Nullable @Named("overwrite.retention") final Function<Map<String, String>, Long> retention,
      @Nullable @Named("overwrite.legalHold") final Supplier<Function<Map<String, String>, String>> legalHold,
      @Nullable @Named("overwrite.contentMd5") final boolean contentMd5); @Provides @Singleton @Named("read") Supplier<Request> provideRead(
      @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
      @ReadHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("read.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @ReadObjectName final Function<Map<String, String>, String> object,
      @ReadHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("read.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Named("read.sseCSource") final boolean encryptedSourceObject,
      @Named("read.staticWebsiteVirtualHostSuffix") final Function<Map<String, String>, String> staticWebsiteVirtualHostSuffix); @Provides @Singleton @Named("write_legalhold") Supplier<Request> provideWriteLegalhold(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("read.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @Nullable @ReadObjectName final Function<Map<String, String>, String> object,
          @ReadHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("write_legalhold.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Nullable @Named("add.legalHold") final Supplier<Function<Map<String, String>, String>> legalhold,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("delete_legalhold") Supplier<Request> provideDeleteLegalhold(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("read.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @Nullable @ReadObjectName final Function<Map<String, String>, String> object,
          @ReadHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("delete_legalhold.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Nullable @Named("delete.legalHold") final Supplier<Function<Map<String, String>, String>> legalhold,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("read_legalhold") Supplier<Request> provideReadLegalholds(
      @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
      @ReadHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("read.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @ReadObjectName final Function<Map<String, String>, String> object,
      @ReadHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("read.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("metadata") Supplier<Request> provideMetadata(
      @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
      @MetadataHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("metadata.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @MetadataObjectName final Function<Map<String, String>, String> object,
      @MetadataHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("metadata.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Named("metadata.sseCSource") final boolean encryptedSourceObject); @Provides @Singleton @Named("delete") Supplier<Request> provideDelete(
      @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
      @DeleteHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("delete.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @DeleteObjectName final Function<Map<String, String>, String> object,
      @DeleteHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("delete.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("multiDelete") Supplier<Request> provideMultiDelete(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @DeleteHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("delete.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @DeleteHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("multiDelete.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost,
          @MultiDeleteBody final Function<Map<String, String>, Body> body); @Provides @Singleton @Named("containerList") Supplier<Request> provideContainerList(
      @Named("request.id") final Function<Map<String, String>, String> id, final Api api,
      final Scheme scheme, @ContainerListHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @ContainerListHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Nullable @Named("api.version") final String apiVersion,
      @Named("containerList.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("containerCreate") Supplier<Request> provideContainerCreate(
      @Named("request.id") final Function<Map<String, String>, String> id, final Api api,
      final Scheme scheme, @ContainerListHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("containerCreate.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @ContainerCreateHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("containerCreate.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Nullable @Named("containerCreate.retention") final Function<Map<String, String>, Long> retention); @Provides @Singleton @Named("multipartWrite") Supplier<Request> provideMultipartWrite(
      @Named("request.id") final Function<Map<String, String>, String> id, final Api api,
      final Scheme scheme, @MultipartWriteHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("multipartWrite.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @MultipartWriteObjectName final Function<Map<String, String>, String> object,
      @Named("multipartWrite.partSize") final Function<Map<String, String>, Long> partSize,
      @Named("multipartWrite.partsPerSession") final Function<Map<String, String>, Integer> partsPerSession,
      @Named("multipartWrite.targetSessions") final int targetSessions,
      @MultipartWriteHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("multipartWrite.context") final List<Function<Map<String, String>, String>> context,
      @MultiPartWriteBody final Function<Map<String, String>, Body> body,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Nullable @Named("multipartWrite.retention") final Function<Map<String, String>, Long> retention,
      @Nullable @Named("multipartWrite.legalHold") final Supplier<Function<Map<String, String>, String>> legalHold,
      @Named("multipartWrite.sseCDestination") final boolean encryptDestinationObject,
      @Nullable @Named("multipartWrite.contentMd5") final boolean contentMd5,
      @Nullable @Named("multipartWrite.delimiter") final Function<Map<String, String>, String> delimiter); }
OGModule extends AbstractModule { public Long provideTestRetentionExtensionConfig(final long currentRetention, final RetentionConfig rc) { final Map<String, String> context = Maps.newHashMap(); context.put(Context.X_OG_OBJECT_RETENTION, Long.toString(currentRetention)); if (rc.expiry != null) { final SelectionConfig<RetentionConfig> rcSelection = new SelectionConfig<RetentionConfig>(); rcSelection.choices.add(new ChoiceConfig<RetentionConfig>(rc)); final Function<Map<String, String>, Long> retentionFunction = this.provideRetentionExtension(rcSelection); return retentionFunction.apply(context); } else { return Long.parseLong(context.get(Context.X_OG_OBJECT_RETENTION)); } } OGModule(final OGConfig config); @Provides @Singleton List<TestCondition> provideTestConditions(final LoadTest test, final EventBus eventBus,
      final Statistics stats, final ConcurrencyConfig concurrency,
      final StoppingConditionsConfig stoppingConditionsConfig,
      final FailingConditionsConfig failingConditionsConfig); Long provideTestRetentionConfig(final RetentionConfig rc); Long provideTestRetentionExtensionConfig(final long currentRetention, final RetentionConfig rc); @Provides @Singleton @Named("request.id") Function<Map<String, String>, String> provideIdSupplier(); @Provides @Singleton @Named("host") Function<Map<String, String>, String> provideHost(); @Provides @Singleton @WriteHost Function<Map<String, String>, String> provideWriteHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @OverwriteHost Function<Map<String, String>, String> provideOverwriteHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @ReadHost Function<Map<String, String>, String> provideReadHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @MetadataHost Function<Map<String, String>, String> provideMetadataHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @DeleteHost Function<Map<String, String>, String> provideDeleteHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @ListHost Function<Map<String, String>, String> provideListHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @ContainerListHost Function<Map<String, String>, String> provideContainerListHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @ContainerCreateHost Function<Map<String, String>, String> provideContainerCreateHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @MultipartWriteHost Function<Map<String, String>, String> provideMultipartWriteHost(
      @Named("host") final Function<Map<String, String>, String> host); @Provides @Singleton @Named("uri.root") String provideUriRoot(final Api api); @Provides @Singleton @Named("write.container") Function<Map<String, String>, String> provideWriteContainer(); @Provides @Singleton @Named("writeCopy.container") Function<Map<String, String>, String> provideWriteCopyContainer(); @Provides @Singleton @Named("writeCopy.sourceContainer") Function<Map<String, String>, String> provideWriteCopySourceContainer(); @Provides @Singleton @Named("overwrite.container") Function<Map<String, String>, String> provideOverwriteContainer(); @Provides @Singleton @Named("read.container") Function<Map<String, String>, String> provideReadContainer(); @Provides @Singleton @Named("read.staticWebsiteVirtualHostSuffix") Function<Map<String, String>, String> provideReadWebsiteContext(); @Provides @Singleton @Named("metadata.container") Function<Map<String, String>, String> provideMetadataContainer(); @Provides @Singleton @Named("delete.container") Function<Map<String, String>, String> provideDeleteContainer(); @Provides @Singleton @Named("containerCreate.container") Function<Map<String, String>, String> provideContainerCreateContainer(); @Provides @Singleton @Named("multipartWrite.container") Function<Map<String, String>, String> provideMultipartWriteContainer(); @Provides @Singleton @Named("objectRestore.container") Function<Map<String, String>, String> provideObjectRestoreContainer(); @Provides @Singleton @Named("putContainerLifecycle.container") Function<Map<String, String>, String> providePutContainerLifecycleContainer(); @Provides @Singleton @Named("getContainerLifecycle.container") Function<Map<String, String>, String> provideGetContainerLifecycleContainer(); @Provides @Singleton @Named("deleteContainerLifecycle.container") Function<Map<String, String>, String> provideDeleteContainerLifecycleContainer(); @Provides @Singleton @Named("putContainerProtection.container") Function<Map<String, String>, String> providePutContainerProtectionContainer(); @Provides @Singleton @Named("getContainerProtection.container") Function<Map<String, String>, String> provideGetContainerProtectionContainer(); Function<Map<String, String>, String> provideContainer(
      final ContainerConfig containerConfig); Function<Map<String, String>, String> provideTargetContainer(
          final ContainerConfig containerConfig); Function<Map<String, String>, String> provideSourceContainer(
          final ContainerConfig containerConfig); @Provides @Singleton @Named("objectRestore.objectRestorePeriod") Function<Map<String, String>, String> provideObjectRestorePeriod(final OperationConfig config); @Provides @Singleton @Named("putContainerLifecycle.archiveTransitionPeriod") Function<Map<String, String>, String> provideArchiveTransitionPeriod(final OperationConfig config); @Provides @Singleton @Named("multipartWrite.partSize") Function<Map<String, String>, Long> provideMultipartWritePartSize(); @Provides @Singleton @Named("multipartWrite.partsPerSession") Function<Map<String, String>, Integer> provideMultipartWritePartsPerSession(); @Provides @Singleton @WriteObjectName Function<Map<String, String>, String> provideWriteObjectName(final Api api); @Provides @Singleton @OverwriteObjectName Function<Map<String, String>, String> provideOverwriteObjectName(); @Provides @Singleton @ReadObjectName Function<Map<String, String>, String> provideReadObjectName(); @Provides @Singleton @SourceReadObjectName Function<Map<String, String>, String> provideSSEReadObjectName(); @Provides @Singleton @MetadataObjectName Function<Map<String, String>, String> provideMetadataObjectName(); @Provides @Singleton @DeleteObjectName Function<Map<String, String>, String> provideDeleteObjectName(); @Provides @Singleton @MultipartWriteObjectName Function<Map<String, String>, String> provideMultipartWriteObjectName(); @Provides @Singleton List<AbstractObjectNameConsumer> provideObjectNameConsumers(
      final ObjectManager objectManager, final EventBus eventBus); @Provides @Singleton @WriteHeaders Map<String, Function<Map<String, String>, String>> provideWriteHeaders(); @Provides @Singleton @WriteCopyHeaders Map<String, Function<Map<String, String>, String>> provideWriteCopyHeaders(); @Provides @Singleton @OverwriteHeaders Map<String, Function<Map<String, String>, String>> provideOverwriteHeaders(); @Provides @Singleton @ReadHeaders Map<String, Function<Map<String, String>, String>> provideReadHeaders(); @Provides @Singleton @MetadataHeaders Map<String, Function<Map<String, String>, String>> provideMetadataHeaders(); @Provides @Singleton @DeleteHeaders Map<String, Function<Map<String, String>, String>> provideDeleteHeaders(); @Provides @Singleton @ListHeaders Map<String, Function<Map<String, String>, String>> provideListHeaders(final Api api); @Provides @Singleton @ContainerListHeaders Map<String, Function<Map<String, String>, String>> provideContainerListHeaders(); @Provides @Singleton @ContainerCreateHeaders Map<String, Function<Map<String, String>, String>> provideContainerCreateHeaders(); @Provides @Singleton @MultipartWriteHeaders Map<String, Function<Map<String, String>, String>> provideMultipartWriteHeaders(); @Provides @Singleton @ObjectRestoreHeaders Map<String, Function<Map<String, String>, String>> provideObjectRestoreHeaders(); @Provides @Singleton @PutContainerLifecycleHeaders Map<String, Function<Map<String, String>, String>> providePutContainerLifecycleHeaders(); @Provides @Singleton @GetContainerLifecycleHeaders Map<String, Function<Map<String, String>, String>> provideGetBucketLifecycleHeaders(); @Provides @Singleton @DeleteContainerLifecycleHeaders Map<String, Function<Map<String, String>, String>> provideDeleteBucketLifecycleHeaders(); @Provides @Singleton @PutContainerProtectionHeaders Map<String, Function<Map<String, String>, String>> providePutContainerProtectionHeaders(); @Provides @Singleton @GetContainerProtectionHeaders Map<String, Function<Map<String, String>, String>> provideGetContainerProtectionHeaders(); @Provides @Singleton @Named("write.context") List<Function<Map<String, String>, String>> provideWriteContext(final Api api); @Provides @Singleton @Named("writeCopy.context") List<Function<Map<String, String>, String>> provideWriteCopyContext(final Api api); @Provides @Singleton @Named("writeCopy.delimiter") Function<Map<String, String>, String> provideWriteCopyDelimiter(final SelectionConfig<ObjectDelimiterConfig> listDelimiterConfig); @Provides @Singleton @Named("api.version") String provideAPIVersion(final Api api); @Provides @Singleton @Named("overwrite.context") List<Function<Map<String, String>, String>> provideOverwriteContext(
      final ObjectManager objectManager); @Provides @Singleton @Named("read.context") List<Function<Map<String, String>, String>> provideReadContext(
      final ObjectManager objectManager); @Provides @Singleton @Named("writeCopySource.context") List<Function<Map<String, String>, String>> provideSSeReadContext(
      final ObjectManager objectManager); @Provides @Named("write_legalhold.context") List<Function<Map<String, String>, String>> provideWriteLegalholdContext(
      final ObjectManager objectManager); @Provides @Named("retention_extension.context") List<Function<Map<String, String>, String>> provideRetentionExtensionContext(
          final ObjectManager objectManager); @Provides @Named("objectRestore.context") List<Function<Map<String, String>, String>> provideObjectRestoreContext(
          final ObjectManager objectManager); @Provides @Singleton @Named("putContainerLifecycle.context") List<Function<Map<String, String>, String>> providePutContainerLifecycleContext(); @Provides @Singleton @Named("getContainerLifecycle.context") List<Function<Map<String, String>, String>> provideGetContainerLifecycleContext(
          final ObjectManager objectManager); @Provides @Singleton @Named("deleteContainerLifecycle.context") List<Function<Map<String, String>, String>> provideDeleteContainerLifecycleContext(
          final ObjectManager objectManager); @Provides @Singleton @Named("putContainerProtection.context") List<Function<Map<String, String>, String>> providePutContainerProtectionContext(); @Provides @Singleton @Named("getContainerProtection.context") List<Function<Map<String, String>, String>> provideGetContainerProtectionContext(
          final ObjectManager objectManager); @Provides @Singleton @Named("metadata.context") List<Function<Map<String, String>, String>> provideMetadataContext(
      final ObjectManager objectManager); @Provides @Singleton @Named("delete.context") List<Function<Map<String, String>, String>> provideDeleteContext(
      final ObjectManager objectManager); @Provides @Singleton @Named("containerList.context") List<Function<Map<String, String>, String>> provideContainerListContext(
      final ObjectManager objectManager); @Provides @Singleton @Named("multiDelete.context") List<Function<Map<String, String>, String>> provideMultiDeleteContext(
          final ObjectManager objectManager); @Provides @Singleton @Named("containerCreate.context") List<Function<Map<String, String>, String>> provideContainerCreateContext(
      final ObjectManager objectManager); @Provides @Singleton @Named("multipartWrite.context") List<Function<Map<String, String>, String>> provideMultipartWriteContext(final Api api); @Provides @Singleton @Named("write.delimiter") Function<Map<String, String>, String> provideListDelimiter(final SelectionConfig<ObjectDelimiterConfig> listDelimiterConfig); @Provides @Singleton @Named("multipartWrite.delimiter") Function<Map<String, String>, String> provideMultipartWritetDelimiter(final SelectionConfig<ObjectDelimiterConfig> listDelimiterConfig); @Provides @Singleton @Named("write.legalHold") Supplier<Function<Map<String, String>, String>> provideLegalHold(); @Provides @Singleton @Named("multipartWrite.legalHold") Supplier<Function<Map<String, String>, String>> provideMultipartLegalHold(); @Provides @Singleton @Named("add.legalHold") Supplier<Function<Map<String, String>, String>> provideAddLegalHold(); @Provides @Singleton @Named("delete.legalHold") Supplier<Function<Map<String, String>, String>> provideDeleteLegalHold(); @Provides @Singleton @Named("delete_legalhold.context") List<Function<Map<String, String>, String>> provideDeleteLegalholdContext(
      final ObjectManager objectManager); @Provides @Singleton Function<Map<String, String>, Body> provideBody(); @Provides @Singleton @WriteBody Function<Map<String, String>, Body> provideWriteBody(); @Provides @Singleton @OverwriteBody Function<Map<String, String>, Body> provideOverwriteBody(); @Provides @Singleton @MultiPartWriteBody Function<Map<String, String>, Body> provideMultiPartWriteBody(); @Provides @Singleton @MultiDeleteBody Function<Map<String, String>, Body> createMultiDeleteBody(final ObjectManager objectManager); @Provides @Singleton @Named("objectfile.location") String provideObjectFileLocation(); @Provides @Singleton @Named("objectfile.name") String provideObjectFileName(final Api api); @Provides @Singleton @Named("objectfile.maxsize") long provideObjectFileMaxSize(); @Provides @Singleton @Named("objectfile.persistfrequency") long provideObjectFilePersistFrequency(); @Provides @Singleton @Named("objectfile.index") Integer provideObjectFileIndex(); @Provides @Singleton Scheduler provideScheduler(final ConcurrencyConfig concurrency, final EventBus eventBus); @Provides @Singleton Client provideClient(final AuthType authType, final Map<AuthType, HttpAuth> authentication,
      final Map<String, ResponseBodyConsumer> responseBodyConsumers); @Provides @Singleton @Named("write") Supplier<Request> provideWrite(
      @Named("request.id") final Function<Map<String, String>, String> id, final Api api,
      final Scheme scheme, @WriteHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("write.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @WriteObjectName final Function<Map<String, String>, String> object,
      @WriteHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("write.context") final List<Function<Map<String, String>, String>> context,
      @WriteBody final Function<Map<String, String>, Body> body,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Named("write.sseCDestination") final boolean encryptDestinationObject,
      @Nullable @Named("write.retention") final Function<Map<String, String>, Long> retention,
      @Nullable @Named("write.legalHold") final Supplier<Function<Map<String, String>, String>> legalHold,
      @Nullable @Named("write.contentMd5") final boolean contentMd5,
      @Nullable @Named("write.delimiter") final Function<Map<String, String>, String> delimiter); @Provides @Singleton @Named("extend_retention") Supplier<Request> provideExtendRetention(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("read.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @Nullable @ReadObjectName final Function<Map<String, String>, String> object,
          @WriteHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("retention_extension.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Nullable @Named("extend.retention") final Function<Map<String, String>, Long> retentionExtension,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("objectRestore") Supplier<Request> provideObjectRestore(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("objectRestore.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @Nullable @ReadObjectName final Function<Map<String, String>, String> object,
          @ObjectRestoreHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("objectRestore.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("putContainerLifecycle") Supplier<Request> providePutContainerLifecycle(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("putContainerLifecycle.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @PutContainerLifecycleHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("putContainerLifecycle.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("putContainerProtection") Supplier<Request> providePutContainerProtection(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("putContainerProtection.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @PutContainerProtectionHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("putContainerProtection.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("getContainerLifecycle") Supplier<Request> provideGetContainerLifecycle(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("getContainerLifecycle.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @GetContainerLifecycleHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("getContainerLifecycle.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("deleteContainerLifecycle") Supplier<Request> provideDeleteContainerLifecycle(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("deleteContainerLifecycle.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @DeleteContainerLifecycleHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("deleteContainerLifecycle.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("getContainerProtection") Supplier<Request> provideGetContainerProtection(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("getContainerProtection.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @GetContainerProtectionHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("getContainerProtection.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("writeCopy") Supplier<Request> provideWriteCopy(
      @Named("request.id") final Function<Map<String, String>, String> id, final Api api,
      final Scheme scheme, @WriteHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("writeCopy.container") final Function<Map<String, String>, String> container,
      @Named("writeCopy.sourceContainer") final Function<Map<String, String>, String> sourceContainer,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @WriteObjectName final Function<Map<String, String>, String> writeObject,
      @Named("writeCopySource.context") final List<Function<Map<String, String>, String>> sseReadContext,
      @Nullable @SourceReadObjectName final Function<Map<String, String>, String> sseSourceReadObject,
      @WriteCopyHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("writeCopy.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Named("writeCopy.sseCSource") final boolean encryptedSourceObject,
      @Named("writeCopy.sseCDestination") final boolean encryptDestinationObject,
      @Nullable @Named("writeCopy.delimiter") final Function<Map<String, String>, String> delimiter); @Provides @Singleton @Named("overwrite") Supplier<Request> provideOverwrite(
      @Named("request.id") final Function<Map<String, String>, String> id, final Api api,
      final Scheme scheme, @OverwriteHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("overwrite.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @OverwriteObjectName final Function<Map<String, String>, String> object,
      @OverwriteHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("overwrite.context") final List<Function<Map<String, String>, String>> context,
      @OverwriteBody final Function<Map<String, String>, Body> body,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Named("overwrite.weight") final double overwriteWeight,
      @Named("overwrite.sseCDestination") final boolean encryptDestinationObject,
      @Nullable @Named("overwrite.retention") final Function<Map<String, String>, Long> retention,
      @Nullable @Named("overwrite.legalHold") final Supplier<Function<Map<String, String>, String>> legalHold,
      @Nullable @Named("overwrite.contentMd5") final boolean contentMd5); @Provides @Singleton @Named("read") Supplier<Request> provideRead(
      @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
      @ReadHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("read.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @ReadObjectName final Function<Map<String, String>, String> object,
      @ReadHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("read.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Named("read.sseCSource") final boolean encryptedSourceObject,
      @Named("read.staticWebsiteVirtualHostSuffix") final Function<Map<String, String>, String> staticWebsiteVirtualHostSuffix); @Provides @Singleton @Named("write_legalhold") Supplier<Request> provideWriteLegalhold(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("read.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @Nullable @ReadObjectName final Function<Map<String, String>, String> object,
          @ReadHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("write_legalhold.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Nullable @Named("add.legalHold") final Supplier<Function<Map<String, String>, String>> legalhold,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("delete_legalhold") Supplier<Request> provideDeleteLegalhold(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @ReadHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("read.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @Nullable @ReadObjectName final Function<Map<String, String>, String> object,
          @ReadHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("delete_legalhold.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Nullable @Named("delete.legalHold") final Supplier<Function<Map<String, String>, String>> legalhold,
          @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("read_legalhold") Supplier<Request> provideReadLegalholds(
      @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
      @ReadHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("read.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @ReadObjectName final Function<Map<String, String>, String> object,
      @ReadHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("read.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("metadata") Supplier<Request> provideMetadata(
      @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
      @MetadataHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("metadata.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @MetadataObjectName final Function<Map<String, String>, String> object,
      @MetadataHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("metadata.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Named("metadata.sseCSource") final boolean encryptedSourceObject); @Provides @Singleton @Named("delete") Supplier<Request> provideDelete(
      @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
      @DeleteHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("delete.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @DeleteObjectName final Function<Map<String, String>, String> object,
      @DeleteHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("delete.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("multiDelete") Supplier<Request> provideMultiDelete(
          @Named("request.id") final Function<Map<String, String>, String> id, final Scheme scheme,
          @DeleteHost final Function<Map<String, String>, String> host,
          @Nullable @Named("port") final Integer port,
          @Nullable @Named("uri.root") final String uriRoot,
          @Named("delete.container") final Function<Map<String, String>, String> container,
          @Nullable @Named("api.version") final String apiVersion,
          @DeleteHeaders final Map<String, Function<Map<String, String>, String>> headers,
          @Named("multiDelete.context") final List<Function<Map<String, String>, String>> context,
          @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
          @Named("virtualhost") final boolean virtualHost,
          @MultiDeleteBody final Function<Map<String, String>, Body> body); @Provides @Singleton @Named("containerList") Supplier<Request> provideContainerList(
      @Named("request.id") final Function<Map<String, String>, String> id, final Api api,
      final Scheme scheme, @ContainerListHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @ContainerListHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Nullable @Named("api.version") final String apiVersion,
      @Named("containerList.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost); @Provides @Singleton @Named("containerCreate") Supplier<Request> provideContainerCreate(
      @Named("request.id") final Function<Map<String, String>, String> id, final Api api,
      final Scheme scheme, @ContainerListHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("containerCreate.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @ContainerCreateHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("containerCreate.context") final List<Function<Map<String, String>, String>> context,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Nullable @Named("containerCreate.retention") final Function<Map<String, String>, Long> retention); @Provides @Singleton @Named("multipartWrite") Supplier<Request> provideMultipartWrite(
      @Named("request.id") final Function<Map<String, String>, String> id, final Api api,
      final Scheme scheme, @MultipartWriteHost final Function<Map<String, String>, String> host,
      @Nullable @Named("port") final Integer port,
      @Nullable @Named("uri.root") final String uriRoot,
      @Named("multipartWrite.container") final Function<Map<String, String>, String> container,
      @Nullable @Named("api.version") final String apiVersion,
      @Nullable @MultipartWriteObjectName final Function<Map<String, String>, String> object,
      @Named("multipartWrite.partSize") final Function<Map<String, String>, Long> partSize,
      @Named("multipartWrite.partsPerSession") final Function<Map<String, String>, Integer> partsPerSession,
      @Named("multipartWrite.targetSessions") final int targetSessions,
      @MultipartWriteHeaders final Map<String, Function<Map<String, String>, String>> headers,
      @Named("multipartWrite.context") final List<Function<Map<String, String>, String>> context,
      @MultiPartWriteBody final Function<Map<String, String>, Body> body,
      @Nullable @Named("credentials") final Function<Map<String, String>, Credential> credentials,
      @Named("virtualhost") final boolean virtualHost,
      @Nullable @Named("multipartWrite.retention") final Function<Map<String, String>, Long> retention,
      @Nullable @Named("multipartWrite.legalHold") final Supplier<Function<Map<String, String>, String>> legalHold,
      @Named("multipartWrite.sseCDestination") final boolean encryptDestinationObject,
      @Nullable @Named("multipartWrite.contentMd5") final boolean contentMd5,
      @Nullable @Named("multipartWrite.delimiter") final Function<Map<String, String>, String> delimiter);  }