001
002package com.commercetools.api.models.extension;
003
004import java.time.*;
005import java.util.*;
006import java.util.function.Function;
007
008import javax.annotation.Nullable;
009
010import com.fasterxml.jackson.annotation.*;
011import com.fasterxml.jackson.databind.annotation.*;
012
013import io.vrap.rmf.base.client.utils.Generated;
014
015/**
016 * ExtensionSetTimeoutInMsAction
017 *
018 * <hr>
019 * Example to create an instance using the builder pattern
020 * <div class=code-example>
021 * <pre><code class='java'>
022 *     ExtensionSetTimeoutInMsAction extensionSetTimeoutInMsAction = ExtensionSetTimeoutInMsAction.builder()
023 *             .build()
024 * </code></pre>
025 * </div>
026 */
027@Generated(value = "io.vrap.rmf.codegen.rendering.CoreCodeGenerator", comments = "https://github.com/commercetools/rmf-codegen")
028@JsonDeserialize(as = ExtensionSetTimeoutInMsActionImpl.class)
029public interface ExtensionSetTimeoutInMsAction extends ExtensionUpdateAction {
030
031    /**
032     * discriminator value for ExtensionSetTimeoutInMsAction
033     */
034    String SET_TIMEOUT_IN_MS = "setTimeoutInMs";
035
036    /**
037     *  <p>Value to set. If not defined, the maximum value is used. If no timeout is provided, the default value is used for all types of Extensions. The maximum value is 10000 ms (10 seconds) for <code>payment</code> Extensions and 2000 ms (2 seconds) for all other Extensions.</p>
038     *  <p>This limit can be increased per Project after we review the performance impact. Please contact our support via the Support Portal and provide the Region, Project key, and use case.</p>
039     * @return timeoutInMs
040     */
041
042    @JsonProperty("timeoutInMs")
043    public Integer getTimeoutInMs();
044
045    /**
046     *  <p>Value to set. If not defined, the maximum value is used. If no timeout is provided, the default value is used for all types of Extensions. The maximum value is 10000 ms (10 seconds) for <code>payment</code> Extensions and 2000 ms (2 seconds) for all other Extensions.</p>
047     *  <p>This limit can be increased per Project after we review the performance impact. Please contact our support via the Support Portal and provide the Region, Project key, and use case.</p>
048     * @param timeoutInMs value to be set
049     */
050
051    public void setTimeoutInMs(final Integer timeoutInMs);
052
053    /**
054     * factory method
055     * @return instance of ExtensionSetTimeoutInMsAction
056     */
057    public static ExtensionSetTimeoutInMsAction of() {
058        return new ExtensionSetTimeoutInMsActionImpl();
059    }
060
061    /**
062     * factory method to create a shallow copy ExtensionSetTimeoutInMsAction
063     * @param template instance to be copied
064     * @return copy instance
065     */
066    public static ExtensionSetTimeoutInMsAction of(final ExtensionSetTimeoutInMsAction template) {
067        ExtensionSetTimeoutInMsActionImpl instance = new ExtensionSetTimeoutInMsActionImpl();
068        instance.setTimeoutInMs(template.getTimeoutInMs());
069        return instance;
070    }
071
072    /**
073     * factory method to create a deep copy of ExtensionSetTimeoutInMsAction
074     * @param template instance to be copied
075     * @return copy instance
076     */
077    @Nullable
078    public static ExtensionSetTimeoutInMsAction deepCopy(@Nullable final ExtensionSetTimeoutInMsAction template) {
079        if (template == null) {
080            return null;
081        }
082        ExtensionSetTimeoutInMsActionImpl instance = new ExtensionSetTimeoutInMsActionImpl();
083        instance.setTimeoutInMs(template.getTimeoutInMs());
084        return instance;
085    }
086
087    /**
088     * builder factory method for ExtensionSetTimeoutInMsAction
089     * @return builder
090     */
091    public static ExtensionSetTimeoutInMsActionBuilder builder() {
092        return ExtensionSetTimeoutInMsActionBuilder.of();
093    }
094
095    /**
096     * create builder for ExtensionSetTimeoutInMsAction instance
097     * @param template instance with prefilled values for the builder
098     * @return builder
099     */
100    public static ExtensionSetTimeoutInMsActionBuilder builder(final ExtensionSetTimeoutInMsAction template) {
101        return ExtensionSetTimeoutInMsActionBuilder.of(template);
102    }
103
104    /**
105     * accessor map function
106     * @param <T> mapped type
107     * @param helper function to map the object
108     * @return mapped value
109     */
110    default <T> T withExtensionSetTimeoutInMsAction(Function<ExtensionSetTimeoutInMsAction, T> helper) {
111        return helper.apply(this);
112    }
113
114    /**
115     * gives a TypeReference for usage with Jackson DataBind
116     * @return TypeReference
117     */
118    public static com.fasterxml.jackson.core.type.TypeReference<ExtensionSetTimeoutInMsAction> typeReference() {
119        return new com.fasterxml.jackson.core.type.TypeReference<ExtensionSetTimeoutInMsAction>() {
120            @Override
121            public String toString() {
122                return "TypeReference<ExtensionSetTimeoutInMsAction>";
123            }
124        };
125    }
126}