MethodDeclaration.java
- package net.morimekta.providence.reflect.model;
- import net.morimekta.providence.reflect.parser.ThriftToken;
- import net.morimekta.util.collect.UnmodifiableList;
- import javax.annotation.Nonnull;
- import javax.annotation.Nullable;
- import java.util.List;
- /**
- * <pre>{@code
- * function ::= 'oneway'? {type} {name} '(' {field}* ')' ('throws' '(' {field}* ')')? {annotations}?
- * }</pre>
- */
- public class MethodDeclaration extends Declaration {
- private final ThriftToken oneway;
- private final List<ThriftToken> returnTypeTokens;
- private final List<FieldDeclaration> params;
- private final ThriftToken requestTypeToken;
- private final List<FieldDeclaration> throwing;
- public MethodDeclaration(@Nullable String documentation,
- @Nullable ThriftToken oneway,
- @Nonnull List<ThriftToken> returnTypeTokens,
- @Nonnull ThriftToken name,
- @Nullable List<FieldDeclaration> params,
- @Nullable ThriftToken requestTypeToken,
- @Nullable List<FieldDeclaration> throwing,
- @Nullable List<AnnotationDeclaration> annotations) {
- super(documentation, name, annotations);
- if (requestTypeToken == null && params == null) {
- throw new IllegalArgumentException("Either request type or params must be non-null");
- } else if (requestTypeToken != null && params != null) {
- throw new IllegalArgumentException("Only one of request type and params may be non-null");
- }
- this.oneway = oneway;
- this.returnTypeTokens = UnmodifiableList.copyOf(returnTypeTokens);
- this.requestTypeToken = requestTypeToken;
- this.params = requestTypeToken == null ? UnmodifiableList.copyOf(params) : null;
- this.throwing = throwing == null || throwing.isEmpty() ? null : UnmodifiableList.copyOf(throwing);
- }
- public boolean isOneWay() {
- return oneway != null;
- }
- @Nullable
- public ThriftToken getRequestTypeToken() {
- return requestTypeToken;
- }
- @Nullable
- public ThriftToken getOneWayToken() {
- return oneway;
- }
- @Nonnull
- public String getReturnType() {
- return DeclarationUtil.toTypeString(returnTypeTokens);
- }
- @Nonnull
- public List<ThriftToken> getReturnTypeTokens() {
- return returnTypeTokens;
- }
- @Nonnull
- public List<FieldDeclaration> getParams() {
- return params;
- }
- @Nullable
- public List<FieldDeclaration> getThrowing() {
- return throwing;
- }
- }