Class AbstractCriteriaMethodMatch

java.lang.Object
io.micronaut.data.processor.visitors.finders.AbstractCriteriaMethodMatch
All Implemented Interfaces:
MethodMatcher.MethodMatch
Direct Known Subclasses:
DeleteCriteriaMethodMatch, QueryCriteriaMethodMatch, UpdateCriteriaMethodMatch

public abstract class AbstractCriteriaMethodMatch extends Object implements MethodMatcher.MethodMatch
Abstract criteria matcher.
Since:
3.2
Author:
Denis Stepanov
  • Field Details

  • Constructor Details

  • Method Details

    • getEntityParameter

      @Nullable protected @Nullable io.micronaut.inject.ast.ParameterElement getEntityParameter()
      Returns:
      The entity parameter
    • getEntitiesParameter

      @Nullable protected @Nullable io.micronaut.inject.ast.ParameterElement getEntitiesParameter()
      Returns:
      The entities parameter
    • getOperationType

      @NonNull protected abstract DataMethod.OperationType getOperationType()
      Returns:
      The operation type
    • supportedByImplicitQueries

      protected boolean supportedByImplicitQueries()
      Returns:
      true of the operation is supported by implicit queries
    • buildMatchInfo

      public final MethodMatchInfo buildMatchInfo(MethodMatchContext matchContext)
      Description copied from interface: MethodMatcher.MethodMatch
      Match info builder.
      Specified by:
      buildMatchInfo in interface MethodMatcher.MethodMatch
      Parameters:
      matchContext - The match context
      Returns:
      The match info
    • build

      protected abstract MethodMatchInfo build(MethodMatchContext matchContext)
    • resolveReturnTypeAndInterceptor

      protected FindersUtils.InterceptorMatch resolveReturnTypeAndInterceptor(MethodMatchContext matchContext)
      Parameters:
      matchContext - The match context
      Returns:
      resolved return type and interceptor
    • extractPredicates

      @Nullable protected final @Nullable jakarta.persistence.criteria.Predicate extractPredicates(List<io.micronaut.inject.ast.ParameterElement> queryParams, PersistentEntityRoot<?> root, PersistentEntityCriteriaBuilder cb)
    • interceptPredicate

      @Nullable protected <T> @Nullable jakarta.persistence.criteria.Predicate interceptPredicate(MethodMatchContext matchContext, List<io.micronaut.inject.ast.ParameterElement> notConsumedParameters, PersistentEntityRoot<T> root, PersistentEntityCriteriaBuilder cb, @Nullable @Nullable jakarta.persistence.criteria.Predicate existingPredicate)
      Intercept the predicate being applied.
      Type Parameters:
      T - The entity type
      Parameters:
      matchContext - The matchContext
      notConsumedParameters - The parameters
      root - The root
      cb - The criteria builder
      existingPredicate - The existing predicate
      Returns:
      A new predicate
    • extractPredicates

      protected final <T> jakarta.persistence.criteria.Predicate extractPredicates(String querySequence, Iterator<io.micronaut.inject.ast.ParameterElement> parametersIt, PersistentEntityRoot<T> root, PersistentEntityCriteriaBuilder cb)
    • getProperty

      @NonNull protected final <T> @NonNull jakarta.persistence.criteria.Expression<Object> getProperty(PersistentEntityRoot<T> root, String propertyName)
    • findProperty

      @Nullable protected final <T> PersistentPropertyPath<Object> findProperty(PersistentEntityRoot<T> root, String propertyName)
    • applyJoinSpecs

      protected final void applyJoinSpecs(PersistentEntityRoot<?> root, @NonNull @NonNull List<io.micronaut.core.annotation.AnnotationValue<Join>> joinSpecs)
    • joinSpecsAtMatchContext

      @NonNull protected final @NonNull List<io.micronaut.core.annotation.AnnotationValue<Join>> joinSpecsAtMatchContext(@NonNull @NonNull MethodMatchContext matchContext, boolean isQuery)
      Parameters:
      matchContext - The match context
      isQuery - true if is a query criteria
      Returns:
      a List of annotations values for Join annotation.
    • hasNoWhereAndJoinDeclaration

      protected final boolean hasNoWhereAndJoinDeclaration(@NonNull @NonNull MethodMatchContext matchContext)
    • findSelections

      protected <T> List<jakarta.persistence.criteria.Selection<?>> findSelections(String projectionPart, PersistentEntityRoot<T> root, PersistentEntityCriteriaBuilder cb, @Nullable @Nullable String returnTypeName)
      Find projection selection.
      Type Parameters:
      T - The query type
      Parameters:
      projectionPart - The projection
      root - The root
      cb - The criteria builder
      returnTypeName - The return type name
      Returns:
      The selections
    • analyzeMethodResult

      protected final AbstractCriteriaMethodMatch.MethodResult analyzeMethodResult(MethodMatchContext matchContext, String selectedType, io.micronaut.inject.ast.ClassElement queryResultType, FindersUtils.InterceptorMatch interceptorMatch, boolean allowEntityResultByDefault)
    • analyzeMethodResult

      protected final AbstractCriteriaMethodMatch.MethodResult analyzeMethodResult(MethodMatchContext matchContext, io.micronaut.inject.ast.ClassElement queryResultType, FindersUtils.InterceptorMatch interceptorMatch, boolean allowEntityResultByDefault)
    • getDtoProjectionProperties

      protected List<SourcePersistentProperty> getDtoProjectionProperties(SourcePersistentEntity entity, io.micronaut.inject.ast.ClassElement returnType)
      Find DTO properties.
      Parameters:
      entity - The entity
      returnType - The result
      Returns:
      DTO properties