All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.intellij.plugins.intelliLang.inject.config.XPathSupportProxyImpl Maven / Gradle / Ivy

Go to download

A packaging of the IntelliJ Community Edition IntelliLang-xml library. This is release number 1 of trunk branch 142.

The newest version!
/*
 * Copyright 2000-2010 JetBrains s.r.o.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.intellij.plugins.intelliLang.inject.config;

import com.intellij.psi.PsiFile;
import com.intellij.psi.impl.source.xml.XmlTokenImpl;
import com.intellij.psi.xml.XmlElement;
import com.intellij.psi.xml.XmlElementType;
import org.intellij.lang.xpath.context.ContextProvider;
import org.intellij.lang.xpath.context.ContextType;
import org.intellij.lang.xpath.context.NamespaceContext;
import org.intellij.lang.xpath.context.VariableContext;
import org.intellij.lang.xpath.psi.XPathExpression;
import org.intellij.lang.xpath.psi.XPathType;
import org.intellij.plugins.xpathView.support.XPathSupport;
import org.intellij.plugins.xpathView.util.Namespace;
import org.jaxen.JaxenException;
import org.jaxen.XPath;
import org.jetbrains.annotations.NotNull;

import javax.xml.namespace.QName;
import java.util.Collections;
import java.util.Set;

/**
* @author Gregory.Shrago
*/
public class XPathSupportProxyImpl extends XPathSupportProxy {
  private static class Provider extends ContextProvider {
    private final XmlTokenImpl myDummyContext = new XmlTokenImpl(XmlElementType.XML_CONTENT_EMPTY, "") {
      @Override
      public boolean isValid() {
        return true;
      }
    };

    @NotNull
    public ContextType getContextType() {
      return XPathSupport.TYPE;
    }

    @NotNull
    @Override
    public XPathType getExpectedType(XPathExpression expr) {
      return XPathType.BOOLEAN;
    }

    public XmlElement getContextElement() {
      // needed because the static method ContextProvider.isValid() checks this to determine if the provider
      // is still valid - refactor this into an instance method ContextProvider.isValid()?
      return myDummyContext;
    }

    public NamespaceContext getNamespaceContext() {
      return null;
    }

    public VariableContext getVariableContext() {
      return null;
    }

    public Set getAttributes(boolean forValidation) {
      return null;
    }

    public Set getElements(boolean forValidation) {
      return null;
    }
  }

  private final ContextProvider myProvider = new Provider();
  private final XPathSupport mySupport = XPathSupport.getInstance();

  @NotNull
  public XPath createXPath(String expression) throws JaxenException {
    return mySupport.createXPath(null, expression, Collections.emptyList());
  }

  public void attachContext(@NotNull PsiFile file) {
    myProvider.attachTo(file);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy