All Downloads are FREE. Search and download functionalities are using the official Maven repository.

software.amazon.awssdk.services.sagemakerfeaturestoreruntime.endpoints.internal.TemplateVisitor Maven / Gradle / Ivy

Go to download

The AWS Java SDK for Sage Maker Feature Store Runtime module holds the client classes that are used for communicating with Sage Maker Feature Store Runtime.

There is a newer version: 2.27.5
Show newest version
/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */

package software.amazon.awssdk.services.sagemakerfeaturestoreruntime.endpoints.internal;

import software.amazon.awssdk.annotations.SdkInternalApi;

/**
 * For code generating from a template, use a `TemplateVisitor`. Template visitor is written to enable optimized
 * behavior for static templates with no dynamic components.
 * 
 * @param 
 *        The return type of this visitor
 */
@SdkInternalApi
public interface TemplateVisitor {
    /**
     * The template contains a single static string, eg. `"https://mystaticendpoing.com"`
     * 
     * @param value
     *        : The static value of the template.
     * @return T
     */
    T visitStaticTemplate(String value);

    /**
     * The template contains a single dynamic element, eg. `{Region}`. In this case, string formatting is not required.
     * The type of the value is guaranteed to be a string.
     * 
     * @param value
     *        : The single expression that represents this template.
     * @return T
     */
    T visitSingleDynamicTemplate(Expr value);

    /**
     * Visit a static element within a multipart template. This will only be called after
     * {@link #startMultipartTemplate()} has been invoked.
     * 
     * @param value
     *        A static element within a larger template
     * @return T
     */
    T visitStaticElement(String value);

    /**
     * Visit a dynamic element within a multipart template. This will only be called after
     * {@link #startMultipartTemplate()} has been invoked.
     * 
     * @param value
     *        The dynamic template value
     * @return T
     */
    T visitDynamicElement(Expr value);

    /**
     * Invoked prior to visiting a multipart template like `https://{Region}.{dnsSuffix}`. This function will be
     * followed by invocations of {@link #visitStaticTemplate(String)} and {@link #visitDynamicElement(Expr)}.
     * 
     * @return T
     */
    T startMultipartTemplate();

    /**
     * Invoked at the conclusion of visiting a multipart template like `https://{Region}.{dnsSuffix}`. This allows
     * implementations to do something like call `string.join()` or `stringbuilder.toString()`.
     * 
     * @return T
     */
    T finishMultipartTemplate();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy