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

software.amazon.smithy.traitcodegen.generators.TraitVisitor Maven / Gradle / Ivy

/*
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0
 */

package software.amazon.smithy.traitcodegen.generators;

import software.amazon.smithy.model.shapes.BigDecimalShape;
import software.amazon.smithy.model.shapes.BigIntegerShape;
import software.amazon.smithy.model.shapes.BlobShape;
import software.amazon.smithy.model.shapes.BooleanShape;
import software.amazon.smithy.model.shapes.ByteShape;
import software.amazon.smithy.model.shapes.DoubleShape;
import software.amazon.smithy.model.shapes.FloatShape;
import software.amazon.smithy.model.shapes.IntegerShape;
import software.amazon.smithy.model.shapes.LongShape;
import software.amazon.smithy.model.shapes.MemberShape;
import software.amazon.smithy.model.shapes.NumberShape;
import software.amazon.smithy.model.shapes.ShapeVisitor;
import software.amazon.smithy.model.shapes.ShortShape;
import software.amazon.smithy.model.shapes.UnionShape;

/**
 * This class provides a simplified visitor interface for visiting trait shapes.
 *
 * 

When handling trait shapes, all number shapes are treat the same, so we can handle * all numberShape branches with a single common method to reduce duplication. * The following shapes are not supported when visiting traits: *

    *
  • MemberShapes
  • *
  • UnionShapes
  • *
  • BlobShapes
  • *
* * @param Return type */ abstract class TraitVisitor extends ShapeVisitor.DataShapeVisitor { @Override public R booleanShape(BooleanShape shape) { throw new UnsupportedOperationException("Boolean traits not supported. Consider using an " + " Annotation Trait."); } @Override public R byteShape(ByteShape shape) { return numberShape(shape); } @Override public R shortShape(ShortShape shape) { return numberShape(shape); } @Override public R integerShape(IntegerShape shape) { return numberShape(shape); } @Override public R longShape(LongShape shape) { return numberShape(shape); } @Override public R floatShape(FloatShape shape) { return numberShape(shape); } @Override public R doubleShape(DoubleShape shape) { return numberShape(shape); } @Override public R bigIntegerShape(BigIntegerShape shape) { return numberShape(shape); } @Override public R bigDecimalShape(BigDecimalShape shape) { return numberShape(shape); } @Override public R unionShape(UnionShape shape) { throw new UnsupportedOperationException("Property generator does not support shape " + shape + " of type " + shape.getType()); } @Override public R blobShape(BlobShape shape) { throw new UnsupportedOperationException("Property generator does not support shape " + shape + " of type " + shape.getType()); } @Override public R memberShape(MemberShape shape) { throw new IllegalArgumentException("Property generator cannot visit member shapes. Attempted " + "to visit " + shape); } protected abstract R numberShape(NumberShape shape); }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy