001package sting.processor;
002
003import java.util.List;
004import javax.annotation.Nonnull;
005
006/**
007 * Immutable metadata for one intercepted service method.
008 */
009public interface InterceptedMethodModel
010{
011  /**
012   * Return the intercepted method name.
013   *
014   * @return the intercepted method name.
015   */
016  @Nonnull
017  String methodName();
018
019  /**
020   * Return the erased return type name.
021   *
022   * @return the erased return type name.
023   */
024  @Nonnull
025  String returnTypeName();
026
027  /**
028   * Return the erased parameter type names in declaration order.
029   *
030   * @return the erased parameter type names in declaration order.
031   */
032  @Nonnull
033  List<String> parameterTypeNames();
034
035  /**
036   * Return the declared thrown type names in declaration order.
037   *
038   * @return the declared thrown type names in declaration order.
039   */
040  @Nonnull
041  List<String> thrownTypeNames();
042
043  /**
044   * Return true if the intercepted method is a default interface method.
045   *
046   * @return true if the intercepted method is a default interface method.
047   */
048  boolean defaultMethod();
049
050  /**
051   * Return true if the intercepted method is variadic.
052   *
053   * @return true if the intercepted method is variadic.
054   */
055  boolean varArgs();
056}