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

software.amazon.awssdk.codegen.jmespath.component.BracketSpecifierWithContents 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;

/**
 * A {@link BracketSpecifier} with some kind of content. Either:
 * 
    *
  • A number, as in [1]
  • *
  • A star expression, as in [*]
  • *
  • A slice expression, as in [1:2:3]
  • *
*/ public class BracketSpecifierWithContents { private Integer number; private WildcardExpression wildcardExpression; private SliceExpression sliceExpression; private BracketSpecifierWithContents() { } public static BracketSpecifierWithContents number(Integer number) { Validate.notNull(number, "number"); BracketSpecifierWithContents result = new BracketSpecifierWithContents(); result.number = number; return result; } public static BracketSpecifierWithContents wildcardExpression(WildcardExpression wildcardExpression) { Validate.notNull(wildcardExpression, "wildcardExpression"); BracketSpecifierWithContents result = new BracketSpecifierWithContents(); result.wildcardExpression = wildcardExpression; return result; } public static BracketSpecifierWithContents sliceExpression(SliceExpression sliceExpression) { Validate.notNull(sliceExpression, "sliceExpression"); BracketSpecifierWithContents result = new BracketSpecifierWithContents(); result.sliceExpression = sliceExpression; return result; } public boolean isNumber() { return number != null; } public boolean isWildcardExpression() { return wildcardExpression != null; } public boolean isSliceExpression() { return sliceExpression != null; } public int asNumber() { Validate.validState(isNumber(), "Not a Number"); return number; } public WildcardExpression asWildcardExpression() { Validate.validState(isWildcardExpression(), "Not a WildcardExpression"); return wildcardExpression; } public SliceExpression asSliceExpression() { Validate.validState(isSliceExpression(), "Not a SliceExpression"); return sliceExpression; } public void visit(JmesPathVisitor visitor) { if (isNumber()) { visitor.visitNumber(asNumber()); } else if (isWildcardExpression()) { visitor.visitWildcardExpression(asWildcardExpression()); } else if (isSliceExpression()) { visitor.visitSliceExpression(asSliceExpression()); } else { throw new IllegalStateException(); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy