FieldDeclaration.java
- package net.morimekta.providence.reflect.model;
- import net.morimekta.providence.descriptor.PRequirement;
- import net.morimekta.providence.reflect.parser.ThriftToken;
- import javax.annotation.Nonnull;
- import javax.annotation.Nullable;
- import java.util.List;
- /**
- * Represents the declaration of a single field param or thrown exception.
- *
- * <pre>{@code
- * field ::= ({id} ':')? {optionality}? {type} {name} ('=' {defaultValue}) {annotations}?
- * }</pre>
- */
- public class FieldDeclaration extends Declaration {
- private final ThriftToken id;
- private final int fieldId;
- private final ThriftToken requirement;
- private final List<ThriftToken> type;
- private final List<ThriftToken> defaultValue;
- public FieldDeclaration(@Nullable String documentation,
- @Nullable ThriftToken id,
- int fieldId,
- @Nullable ThriftToken requirement,
- @Nonnull ThriftToken name,
- @Nonnull List<ThriftToken> type,
- @Nullable List<ThriftToken> defaultValue,
- @Nullable List<AnnotationDeclaration> annotations) {
- super(documentation, name, annotations);
- this.id = id;
- this.fieldId = fieldId;
- this.requirement = requirement;
- this.type = type;
- this.defaultValue = defaultValue;
- }
- public int getId() {
- return fieldId;
- }
- public ThriftToken getIdToken() {
- return id;
- }
- @Nonnull
- public PRequirement getRequirement() {
- if (requirement != null) {
- switch (requirement.toString()) {
- case "required": return PRequirement.REQUIRED;
- case "optional": return PRequirement.OPTIONAL;
- }
- }
- return PRequirement.DEFAULT;
- }
- @Nullable
- public ThriftToken getRequirementToken() {
- return requirement;
- }
- public String getDefaultValue() {
- if (defaultValue != null) {
- return DeclarationUtil.toValueString(defaultValue);
- }
- return null;
- }
- @Nullable
- public List<ThriftToken> getDefaultValueTokens() {
- return defaultValue;
- }
- @Nonnull
- public String getType() {
- return DeclarationUtil.toTypeString(type);
- }
- @Nonnull
- public ThriftToken getTypeToken() {
- return DeclarationUtil.toTypeToken(type);
- }
- @Nonnull
- public List<ThriftToken> getTypeTokens() {
- return type;
- }
- }