/* * Copyright 2000-2011 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 com.intellij.psi; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.javadoc.PsiDocTag; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** * @author max */ public interface PsiJavaParserFacade { /** * Creates a JavaDoc tag from the specified text. * * @param docTagText the text of the JavaDoc tag. * @return the created tag. * @throws com.intellij.util.IncorrectOperationException if the text of the tag is not valid. */ @NotNull PsiDocTag createDocTagFromText(@NotNull String docTagText) throws IncorrectOperationException; /** * Creates a JavaDoc comment from the specified text. * * @param docCommentText the text of the JavaDoc comment. * @return the created comment. * @throws com.intellij.util.IncorrectOperationException if the text of the comment is not valid. */ @NotNull PsiDocComment createDocCommentFromText(@NotNull String docCommentText) throws IncorrectOperationException; /** * Creates a Java class from the specified text. * * @param text the text of the class to create. * @param context the PSI element used as context for resolving references which cannot be resolved * within the class. * @return the created class instance. * @throws com.intellij.util.IncorrectOperationException if the text is not a valid class body. */ @NotNull PsiClass createClassFromText(@NotNull @NonNls String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a Java field from the specified text. * * @param text the text of the field to create. * @param context the PSI element used as context for resolving references from the field. * @return the created field instance. * @throws com.intellij.util.IncorrectOperationException if the text is not a valid field body. */ @NotNull PsiField createFieldFromText(@NotNull @NonNls String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a Java method from the specified text with the specified language level. * * @param text the text of the method to create. * @param context the PSI element used as context for resolving references from the method. * @param languageLevel the language level used for creating the method. * @return the created method instance. * @throws com.intellij.util.IncorrectOperationException if the text is not a valid method body. */ @NotNull PsiMethod createMethodFromText(@NotNull @NonNls String text, @Nullable PsiElement context, LanguageLevel languageLevel) throws IncorrectOperationException; /** * Creates a Java method from the specified text. * * @param text the text of the method to create. * @param context the PSI element used as context for resolving references from the method. * @return the created method instance. * @throws com.intellij.util.IncorrectOperationException if the text is not a valid method body. */ @NotNull PsiMethod createMethodFromText(@NotNull @NonNls String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a Java parameter from the specified text. * * @param text the text of the parameter to create. * @param context the PSI element used as context for resolving references from the parameter. * @return the created parameter instance. * @throws com.intellij.util.IncorrectOperationException if the text is not a valid parameter body. */ @NotNull PsiParameter createParameterFromText(@NotNull @NonNls String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a Java try-resource from the specified text. * * @param text the text of the resource to create. * @param context the PSI element used as context for resolving references from the resource. * @return the created resource instance. * @throws com.intellij.util.IncorrectOperationException if the text is not a valid resource definition. */ @NotNull PsiResourceVariable createResourceFromText(@NotNull String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a Java type from the specified text. * * @param text the text of the type to create (for example, a primitive type keyword, an array * declaration or the name of a class). * @param context the PSI element used as context for resolving the reference. * @return the created type instance. * @throws com.intellij.util.IncorrectOperationException if the text does not specify a valid type. */ @NotNull PsiType createTypeFromText(@NotNull @NonNls String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a Java type element from the specified text. * * @param text the text of the type to create (for example, a primitive type keyword, an array * declaration or the name of a class). * @param context the PSI element used as context for resolving the reference. * @return the created type element. * @throws com.intellij.util.IncorrectOperationException if the text does not specify a valid type. */ @NotNull PsiTypeElement createTypeElementFromText(@NotNull @NonNls String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a Java code reference from the specified text. * * @param text the text of the type to create (for example, a primitive type keyword, an array * declaration or the name of a class). * @param context the PSI element used as context for resolving the reference. * @return the created reference element. * @throws com.intellij.util.IncorrectOperationException if the text does not specify a valid type. */ @NotNull PsiJavaCodeReferenceElement createReferenceFromText(@NotNull @NonNls String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a Java code block from the specified text. * * @param text the text of the code block to create. * @param context the PSI element used as context for resolving references from the block. * @return the created code block instance. * @throws com.intellij.util.IncorrectOperationException if the text does not specify a valid code block. */ @NotNull PsiCodeBlock createCodeBlockFromText(@NotNull @NonNls String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a Java statement from the specified text. * * @param text the text of the statement to create. * @param context the PSI element used as context for resolving references from the statement. * @return the created statement instance. * @throws com.intellij.util.IncorrectOperationException if the text does not specify a valid statement. */ @NotNull PsiStatement createStatementFromText(@NotNull @NonNls String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a Java expression from the specified text. * * @param text the text of the expression to create. * @param context the PSI element used as context for resolving references from the expression. * @return the created expression instance. * @throws com.intellij.util.IncorrectOperationException if the text does not specify a valid expression. */ @NotNull PsiExpression createExpressionFromText(@NotNull @NonNls String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a Java comment from the specified text. * * @param text the text of the comment to create. * @param context the PSI element used as context for resolving references from the comment. * @return the created comment instance. * @throws com.intellij.util.IncorrectOperationException if the text does not specify a valid comment. */ @NotNull PsiComment createCommentFromText(@NotNull String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a type parameter from the specified text. * * @param text the text of the type parameter to create. * @param context the context for resolving references. * @return the created type parameter instance. * @throws com.intellij.util.IncorrectOperationException if the text does not specify a valid type parameter. */ @NotNull PsiTypeParameter createTypeParameterFromText(@NotNull @NonNls String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates an annotation from the specified text. * * @param annotationText the text of the annotation to create. * @param context the context for resolving references from the annotation. * @return the created annotation instance. * @throws com.intellij.util.IncorrectOperationException if the text does not specify a valid annotation. */ @NotNull PsiAnnotation createAnnotationFromText(@NotNull @NonNls String annotationText, @Nullable PsiElement context) throws IncorrectOperationException; @NotNull PsiEnumConstant createEnumConstantFromText(@NotNull String text, @Nullable PsiElement context) throws IncorrectOperationException; /** * Creates a Java type from the specified text. * * @param text the text of the type to create (a primitive type keyword). * @param annotations array (possible empty) of annotations to annotate the created type. * @return the created type instance. * @throws IncorrectOperationException if some of the parameters are not valid. */ @NotNull PsiType createPrimitiveType(@NotNull String text, @NotNull PsiAnnotation[] annotations) throws IncorrectOperationException; }