Class NullableIndex

java.lang.Object
software.amazon.smithy.model.knowledge.NullableIndex
All Implemented Interfaces:
KnowledgeIndex
Direct Known Subclasses:
BoxIndex

public class NullableIndex extends Object implements KnowledgeIndex
An index that checks if a member is nullable.
  • Constructor Details

    • NullableIndex

      public NullableIndex(Model model)
  • Method Details

    • of

      public static NullableIndex of(Model model)
    • isMemberNullable

      public boolean isMemberNullable(MemberShape member)
      Checks if a member is nullable using NullableIndex.CheckMode.CLIENT.
      Parameters:
      member - Member to check.
      Returns:
      Returns true if the member is optional in non-authoritative consumers of the model like clients.
      See Also:
    • isMemberNullable

      public boolean isMemberNullable(MemberShape member, NullableIndex.CheckMode checkMode)
      Checks if a member is nullable using v2 nullability rules.

      A checkMode parameter is required to declare what kind of model consumer is checking if the member is optional. The authoritative consumers like servers do not need to honor the InputTrait or ClientOptionalTrait, while non-authoritative consumers like clients must honor these traits.

      Parameters:
      member - Member to check.
      checkMode - The mode used when checking if the member is considered nullable.
      Returns:
      Returns true if the member is optional.
    • isNullable

      @Deprecated public final boolean isNullable(ToShapeId shapeId)
      Deprecated.
      Checks if the given shape is optional using Smithy IDL 1.0 semantics.

      This method does not return the same values that are returned by isMemberNullable(MemberShape). This method uses 1.0 model semantics and attempts to detect when a model has been passed though model assembler upgrades to provide the most accurate v1 nullability result.

      Use isMemberNullable(MemberShape) to check using Smithy IDL 2.0 semantics that take required, default, and other traits into account with no special 1.0 handling.

      Parameters:
      shapeId - Shape or shape ID to check.
      Returns:
      Returns true if the shape is nullable.
    • isShapeSetToDefaultZeroValueInV1

      public static boolean isShapeSetToDefaultZeroValueInV1(MemberShape member, Shape target)
      Detects if the given member is configured to use the zero value for the target shape using Smithy 1.0 semantics (that is, it targets a number shape other than bigInteger or bigDecimal and set to 0; or it targets a boolean shape and is set to false).
      Parameters:
      member - Member to check.
      target - Shape target to check.
      Returns:
      Returns true if the member has a default trait set to a v1 zero value.
    • isDefaultZeroValueOfTypeInV1

      public static boolean isDefaultZeroValueOfTypeInV1(Node defaultValue, ShapeType targetType)
      Detects if the given node value equals the default value of the given shape type based on Smithy 1.0 semantics.
      Parameters:
      defaultValue - Value to check.
      targetType - Shape type to check against.
      Returns:
      Returns true if the value is the v1 zero value of the type.