Search in sources :

Example 1 with AntDomRecursiveVisitor

use of com.intellij.lang.ant.dom.AntDomRecursiveVisitor in project intellij-community by JetBrains.

the class AntBuildTargetImpl method findTask.

@Nullable
public BuildTask findTask(final String taskName) {
    final PsiFile psiFile = PsiManager.getInstance(myProject).findFile(myFile);
    final AntDomProject domProject = AntSupport.getAntDomProject(psiFile);
    if (domProject != null) {
        final AntDomTarget antTarget = domProject.findDeclaredTarget(myName);
        if (antTarget != null) {
            final Ref<AntDomElement> result = new Ref<>(null);
            antTarget.accept(new AntDomRecursiveVisitor() {

                public void visitAntDomElement(AntDomElement element) {
                    if (result.get() != null) {
                        return;
                    }
                    if (element.isTask() && taskName.equals(element.getXmlElementName())) {
                        result.set(element);
                        return;
                    }
                    super.visitAntDomElement(element);
                }
            });
            final AntDomElement task = result.get();
            if (task != null) {
                return new BuildTask(this, task);
            }
        }
    }
    return null;
}
Also used : Ref(com.intellij.openapi.util.Ref) AntDomElement(com.intellij.lang.ant.dom.AntDomElement) AntDomRecursiveVisitor(com.intellij.lang.ant.dom.AntDomRecursiveVisitor) PsiFile(com.intellij.psi.PsiFile) AntDomTarget(com.intellij.lang.ant.dom.AntDomTarget) AntDomProject(com.intellij.lang.ant.dom.AntDomProject) Nullable(org.jetbrains.annotations.Nullable)

Example 2 with AntDomRecursiveVisitor

use of com.intellij.lang.ant.dom.AntDomRecursiveVisitor in project intellij-community by JetBrains.

the class CustomTypesTest method doTest.

protected void doTest() throws Exception {
    String name = getTestName(false);
    String text = loadFile(name + ".ant");
    PsiFile file = myFixture.addFileToProject(name + ".ant", text);
    final AntDomProject antProject = AntSupport.getAntDomProject(file);
    final Ref<Boolean> found = new Ref<>(false);
    antProject.accept(new AntDomRecursiveVisitor() {

        @Override
        public void visitAntDomElement(AntDomElement element) {
            if (!found.get()) {
                super.visitAntDomElement(element);
            }
        }

        @Override
        public void visitAntDomCustomElement(AntDomCustomElement element) {
            final Class clazz = element.getDefinitionClass();
            if (clazz != null && AntCustomTask.class.getName().equals(clazz.getName())) {
                found.set(true);
            } else {
                super.visitAntDomElement(element);
            }
        }
    });
    assertTrue(found.get());
}
Also used : Ref(com.intellij.openapi.util.Ref) AntDomCustomElement(com.intellij.lang.ant.dom.AntDomCustomElement) AntDomElement(com.intellij.lang.ant.dom.AntDomElement) AntCustomTask(com.intellij.lang.ant.typedefs.AntCustomTask) AntDomRecursiveVisitor(com.intellij.lang.ant.dom.AntDomRecursiveVisitor) PsiFile(com.intellij.psi.PsiFile) AntDomProject(com.intellij.lang.ant.dom.AntDomProject)

Aggregations

AntDomElement (com.intellij.lang.ant.dom.AntDomElement)2 AntDomProject (com.intellij.lang.ant.dom.AntDomProject)2 AntDomRecursiveVisitor (com.intellij.lang.ant.dom.AntDomRecursiveVisitor)2 Ref (com.intellij.openapi.util.Ref)2 PsiFile (com.intellij.psi.PsiFile)2 AntDomCustomElement (com.intellij.lang.ant.dom.AntDomCustomElement)1 AntDomTarget (com.intellij.lang.ant.dom.AntDomTarget)1 AntCustomTask (com.intellij.lang.ant.typedefs.AntCustomTask)1 Nullable (org.jetbrains.annotations.Nullable)1