package org.jboss.windup.rules.apps.java.condition;
import org.jboss.windup.rules.apps.java.condition.annotation.AnnotationCondition;
import org.jboss.windup.rules.apps.java.condition.annotation.AnnotationTypeCondition;
import org.jboss.windup.rules.apps.java.scan.ast.JavaTypeReferenceModel;
import org.ocpsoft.rewrite.config.Condition;
import org.ocpsoft.rewrite.config.ConditionBuilder;
public interface JavaClassBuilderAt extends ConditionBuilder
{
/**
* Specifies a specific condition match for filtering annotations based upon their elements.
*/
JavaClassBuilderAt annotationMatches(String element, AnnotationCondition condition);
/**
* Specifies an annotation that must be present on the current element. If the current item is a method, type declaration, or
* member declaration, then this will match on any annotations present on this item.
*
* If the current item is itself an annotation, then this will match on any "sibling" annotations.
*/
JavaClassBuilderAt annotationMatches(AnnotationTypeCondition condition);
/**
* Specify the the variable in which to store matching {@link JavaTypeReferenceModel} results, and complete the builder,
* returning a fully configured {@link Condition} object.
*/
ConditionBuilder as(String variable);
}