Substitution.java

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.core.http.rest;

/**
 * A Substitution is a value that can be used to replace placeholder values in a URL. Placeholders
 * look like: "http://{host}.com/{fileName}.html", where "{host}" and "{fileName}" are the
 * placeholders.
 */
class Substitution {
    private final String urlParameterName;
    private final int methodParameterIndex;
    private final boolean shouldEncode;

    /**
     * Create a new Substitution.
     * @param urlParameterName The name that is used between curly quotes as a placeholder in the
     *                         target URL.
     * @param methodParameterIndex The index of the parameter in the original interface method where
     *                             the value for the placeholder is.
     * @param shouldEncode Whether or not the value from the method's argument should be encoded
     *                     when the substitution is taking place.
     */
    Substitution(String urlParameterName, int methodParameterIndex, boolean shouldEncode) {
        this.urlParameterName = urlParameterName;
        this.methodParameterIndex = methodParameterIndex;
        this.shouldEncode = shouldEncode;
    }

    /**
     * Get the placeholder's name.
     * @return The name of the placeholder.
     */
    public String getUrlParameterName() {
        return urlParameterName;
    }

    /**
     * Get the index of the method parameter where the replacement value is.
     * @return The index of the method parameter where the replacement value is.
     */
    public int getMethodParameterIndex() {
        return methodParameterIndex;
    }

    /**
     * Get whether or not the replacement value from the method argument needs to be encoded when the
     * substitution is taking place.
     * @return Whether or not the replacement value from the method argument needs to be encoded
     * when the substitution is taking place.
     */
    public boolean shouldEncode() {
        return shouldEncode;
    }
}