Class BaseRepositoryMethodsGenerator

All Implemented Interfaces:
RepositoryInterfaceGenerator

public abstract class BaseRepositoryMethodsGenerator extends BaseRepositoryInterfaceGenerator
Data repository interface code generator base class for methods generators.
  • Constructor Details

    • BaseRepositoryMethodsGenerator

      protected BaseRepositoryMethodsGenerator(RepositoryInfo repositoryInfo, ClassModel.Builder classModel, CodegenContext codegenContext, PersistenceGenerator persistenceGenerator)
      Creates an instance of data repository interface code generator base class for methods generators.
      Parameters:
      repositoryInfo - data repository interface info
      classModel - target class builder
      codegenContext - code processing and generation context
      persistenceGenerator - persistence provider specific generator
  • Method Details

    • genericReturnTypeArgument

      protected static TypeName genericReturnTypeArgument(TypedElementInfo methodInfo)
      Extract TypeName of generic argument from provided TypedElementInfo methodInfo return type. Retrieves generic argument from single generic argument types like List or Stream
      Parameters:
      methodInfo - method info
      Returns:
      TypeName of generic argument
    • isListOrCollection

      protected static boolean isListOrCollection(TypeName typeName)
      Check whether provided TypeName is List or Collection.
      Parameters:
      typeName - type to check
      Returns:
      value of true when provided TypeName is List or Collection, value of false otherwise
    • isStream

      protected static boolean isStream(TypeName typeName)
      Check whether provided TypeName is Stream.
      Parameters:
      typeName - type to check
      Returns:
      value of true when provided TypeName is Stream, value of false otherwise
    • isSlice

      protected static boolean isSlice(TypeName typeName)
      Check whether provided TypeName is io.helidon.data.Slice.
      Parameters:
      typeName - type to check
      Returns:
      value of true when provided TypeName is io.helidon.data.Slice, value of false otherwise
    • isPage

      protected static boolean isPage(TypeName typeName)
      Check whether provided TypeName is io.helidon.data.Page.
      Parameters:
      typeName - type to check
      Returns:
      value of true when provided TypeName is io.helidon.data.Page, value of false otherwise
    • isSliceOrPage

      protected static boolean isSliceOrPage(TypeName typeName)
      Check whether provided TypeName is io.helidon.data.Slice or io.helidon.data.Page.
      Parameters:
      typeName - type to check
      Returns:
      value of true when provided TypeName is io.helidon.data.Slice or io.helidon.data.Page, value of false otherwise
    • paramElementName

      protected static String paramElementName(TypedElementInfo param)
      Retrieve name of the method parameter from provided TypedElementInfo param.
      Parameters:
      param - method parameter info
      Returns:
      name of the method parameter
    • generateHeader

      protected MethodParams generateHeader(Method.Builder builder, TypedElementInfo methodInfo)
      Generate method header matching interface prototype and return method parameters.
      Parameters:
      builder - method builder
      methodInfo - method info
      Returns:
      method parameters
    • processParam

      protected abstract void processParam(MethodParams.Builder builder, TypedElementInfo paramInfo)
      Process method parameter. Extending class must implement this method to properly handle each parameter of the generated method.
      Parameters:
      builder - method builder
      paramInfo - method parameter info