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

software.amazon.awssdk.codegen.jmespath.component.SubExpressionRight Maven / Gradle / Ivy

/*
 * 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.codegen.jmespath.component;

import software.amazon.awssdk.codegen.jmespath.parser.JmesPathVisitor;
import software.amazon.awssdk.utils.Validate;

/**
 * The right side of a {@link SubExpression}.
 */
public class SubExpressionRight {
    private String identifier;
    private MultiSelectList multiSelectList;
    private MultiSelectHash multiSelectHash;
    private FunctionExpression functionExpression;
    private WildcardExpression wildcardExpression;

    public static SubExpressionRight identifier(String identifier) {
        Validate.notNull(identifier, "identifier");
        SubExpressionRight result = new SubExpressionRight();
        result.identifier = identifier;
        return result;
    }

    public static SubExpressionRight multiSelectList(MultiSelectList multiSelectList) {
        Validate.notNull(multiSelectList, "multiSelectList");
        SubExpressionRight result = new SubExpressionRight();
        result.multiSelectList = multiSelectList;
        return result;
    }

    public static SubExpressionRight multiSelectHash(MultiSelectHash multiSelectHash) {
        Validate.notNull(multiSelectHash, "multiSelectHash");
        SubExpressionRight result = new SubExpressionRight();
        result.multiSelectHash = multiSelectHash;
        return result;
    }

    public static SubExpressionRight functionExpression(FunctionExpression functionExpression) {
        Validate.notNull(functionExpression, "functionExpression");
        SubExpressionRight result = new SubExpressionRight();
        result.functionExpression = functionExpression;
        return result;
    }

    public static SubExpressionRight wildcardExpression(WildcardExpression wildcardExpression) {
        Validate.notNull(wildcardExpression, "wildcardExpression");
        SubExpressionRight result = new SubExpressionRight();
        result.wildcardExpression = wildcardExpression;
        return result;
    }


    public boolean isIdentifier() {
        return identifier != null;
    }

    public boolean isMultiSelectList() {
        return multiSelectList != null;
    }

    public boolean isMultiSelectHash() {
        return multiSelectHash != null;
    }

    public boolean isFunctionExpression() {
        return functionExpression != null;
    }

    public boolean isWildcardExpression() {
        return wildcardExpression != null;
    }

    public String asIdentifier() {
        Validate.validState(isIdentifier(), "Not an Identifier");
        return identifier;
    }

    public MultiSelectList asMultiSelectList() {
        Validate.validState(isMultiSelectList(), "Not a MultiSelectList");
        return multiSelectList;
    }

    public MultiSelectHash asMultiSelectHash() {
        Validate.validState(isMultiSelectHash(), "Not a MultiSelectHash");
        return multiSelectHash;
    }

    public FunctionExpression asFunctionExpression() {
        Validate.validState(isFunctionExpression(), "Not a FunctionExpression");
        return functionExpression;
    }

    public WildcardExpression asWildcardExpression() {
        Validate.validState(isWildcardExpression(), "Not a WildcardExpression");
        return wildcardExpression;
    }

    public void visit(JmesPathVisitor visitor) {
        if (isIdentifier()) {
            visitor.visitIdentifier(asIdentifier());
        } else if (isMultiSelectList()) {
            visitor.visitMultiSelectList(asMultiSelectList());
        } else if (isMultiSelectHash()) {
            visitor.visitMultiSelectHash(asMultiSelectHash());
        } else if (isFunctionExpression()) {
            visitor.visitFunctionExpression(asFunctionExpression());
        } else if (isWildcardExpression()) {
            visitor.visitWildcardExpression(asWildcardExpression());
        } else {
            throw new IllegalStateException();
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy