Package org.jetbrains.plugins.cucumber.java.steps.search

Source Code of org.jetbrains.plugins.cucumber.java.steps.search.CucumberJavaStepDefinitionSearch

package org.jetbrains.plugins.cucumber.java.steps.search;

import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.util.Computable;
import com.intellij.psi.PsiAnnotation;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.PsiReference;
import com.intellij.psi.search.searches.ReferencesSearch;
import com.intellij.util.Processor;
import com.intellij.util.QueryExecutor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.cucumber.CucumberUtil;
import org.jetbrains.plugins.cucumber.java.CucumberJavaUtil;

/**
* User: Andrey.Vokin
* Date: 7/25/12
*/
public class CucumberJavaStepDefinitionSearch implements QueryExecutor<PsiReference, ReferencesSearch.SearchParameters> {
  @Override
  public boolean execute(@NotNull final ReferencesSearch.SearchParameters queryParameters,
                         @NotNull final Processor<PsiReference> consumer) {
    final PsiElement myElement = queryParameters.getElementToSearch();
    if (!(myElement instanceof PsiMethod)) {
      return true;
    }
    final PsiMethod method = (PsiMethod)myElement;
    Boolean isStepDefinition = ApplicationManager.getApplication().runReadAction(new Computable<Boolean>() {
      @Override
      public Boolean compute() {
        return CucumberJavaUtil.isStepDefinition(method);
      }
    });
    if (!isStepDefinition) {
      return true;
    }

    final PsiAnnotation stepAnnotation = ApplicationManager.getApplication().runReadAction(new Computable<PsiAnnotation>() {
      @Override
      public PsiAnnotation compute() {
        return CucumberJavaUtil.getCucumberStepAnnotation(method);
      }
    });

    final String regexp = CucumberJavaUtil.getPatternFromStepDefinition(stepAnnotation);
    if (regexp == null) {
      return true;
    }
    return CucumberUtil.findGherkinReferencesToElement(myElement, regexp, consumer, queryParameters.getEffectiveSearchScope());
  }
}
TOP

Related Classes of org.jetbrains.plugins.cucumber.java.steps.search.CucumberJavaStepDefinitionSearch

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.