blob: c1389781d372c6eb37be7f0966e157f4161a41a9 [file] [log] [blame]
/*
* 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 org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import com.intellij.pom.java.LanguageLevel;
/**
* Represents a Java, JSP or class file.
*/
public interface PsiJavaFile extends PsiImportHolder, PsiClassOwner {
/**
* Returns the package statement contained in the file.
*
* @return the package statement, or null if one is missing.
*/
@Nullable PsiPackageStatement getPackageStatement();
/**
* Returns the name of the package to which the file belongs.
*
* @return the name specified in the package statement, or an empty string for a JSP page or
* file which has no package statement.
*/
@Override
@NotNull String getPackageName();
/**
* Returns the import list contained in the file.
*
* @return the import list, or null if this element represents a compiled class.
*/
@Nullable PsiImportList getImportList();
/**
* Returns the list of classes or packages which have been
* imported on demand (for example, javax.swing.*)
*
* @param includeImplicit if true, implicitly imported packages (like java.lang) are included.
* @param checkIncludes deprecated, no longer used
* @return the list of PsiClass or PsiPackage elements for the imports.
*/
@NotNull PsiElement[] getOnDemandImports(boolean includeImplicit, @Deprecated boolean checkIncludes);
/**
* Returns the list of classes which have been imported as
* single-class imports.
*
* @param checkIncludes deprecated, no longer used.
* @return the list of PsiClass elements for the import.
*/
@NotNull PsiClass[] getSingleClassImports(@Deprecated boolean checkIncludes);
/**
* Returns the list of names of implicitly imported packages
* (for example, java.lang).
*
* @return the list of implicitly imported package names.
*/
@NotNull String[] getImplicitlyImportedPackages();
/**
* returns the list of reference elements for the
* implicitly imported packages (for example, java.lang).
*
* @return the list of implicitly imported package reference elements.
*/
@NotNull PsiJavaCodeReferenceElement[] getImplicitlyImportedPackageReferences();
/**
* Returns the single-class import statement which references
* the specified class, or null if there is no such statement.
*
* @param aClass the class to return the import statement for.
* @return the Java code reference under the import statement, or null if there is no such statement.
*/
@Nullable PsiJavaCodeReferenceElement findImportReferenceTo(PsiClass aClass);
@NotNull LanguageLevel getLanguageLevel();
}