This commit is contained in:
Alexey Kudravtsev
2011-12-28 13:05:54 +04:00
parent 881aa60d8a
commit 4fecca4887
33 changed files with 154 additions and 144 deletions
@@ -121,12 +121,12 @@ public class ExternalAnnotationsManagerImpl extends ExternalAnnotationsManager {
}
@Nullable
public PsiAnnotation findExternalAnnotation(final PsiModifierListOwner listOwner, final String annotationFQN) {
public PsiAnnotation findExternalAnnotation(@NotNull final PsiModifierListOwner listOwner, @NotNull final String annotationFQN) {
return collectExternalAnnotations(listOwner).get(annotationFQN);
}
@Nullable
public PsiAnnotation[] findExternalAnnotations(final PsiModifierListOwner listOwner) {
public PsiAnnotation[] findExternalAnnotations(@NotNull final PsiModifierListOwner listOwner) {
final Map<String, PsiAnnotation> result = collectExternalAnnotations(listOwner);
return result.isEmpty() ? null : result.values().toArray(new PsiAnnotation[result.size()]);
}
@@ -136,43 +136,42 @@ public class ExternalAnnotationsManagerImpl extends ExternalAnnotationsManager {
if (hasAnyAnnotationsRoots() == ThreeState.NO) return Collections.emptyMap();
final Map<String, PsiAnnotation> result = new HashMap<String, PsiAnnotation>();
final List<XmlFile> files = findExternalAnnotationsFile(listOwner);
if (files != null) {
for (XmlFile file : files) {
if (file.isValid()) {
final XmlDocument document = file.getDocument();
if (document != null) {
final XmlTag rootTag = document.getRootTag();
if (rootTag != null) {
final String externalName = PsiFormatUtil.getExternalName(listOwner, false);
final String oldExternalName = getNormalizedExternalName(listOwner);
for (final XmlTag tag : rootTag.getSubTags()) {
final String className = tag.getAttributeValue("name");
if (Comparing.strEqual(className, externalName) || Comparing.strEqual(className, oldExternalName)) {
for (XmlTag annotationTag : tag.getSubTags()) {
final String annotationFQN = annotationTag.getAttributeValue("name");
final StringBuilder buf = new StringBuilder();
for (XmlTag annotationaParameter : annotationTag.getSubTags()) {
buf.append(",");
final String nameValue = annotationaParameter.getAttributeValue("name");
if (nameValue != null) {
buf.append(nameValue).append("=");
}
buf.append(StringUtil.unescapeXml(annotationaParameter.getAttributeValue("val")));
}
final String annotationText =
"@" + annotationFQN + (buf.length() > 0 ? "(" + StringUtil.trimStart(buf.toString(), ",") + ")" : "");
try {
result.put(annotationFQN,
JavaPsiFacade.getInstance(listOwner.getProject()).getElementFactory().createAnnotationFromText(
annotationText, null));
}
catch (IncorrectOperationException e) {
LOG.error(e);
}
}
}
}
if (files == null) {
return Collections.emptyMap();
}
for (XmlFile file : files) {
if (!file.isValid()) continue;
final XmlDocument document = file.getDocument();
if (document == null) continue;
final XmlTag rootTag = document.getRootTag();
if (rootTag == null) continue;
final String externalName = PsiFormatUtil.getExternalName(listOwner, false);
final String oldExternalName = getNormalizedExternalName(listOwner);
for (final XmlTag tag : rootTag.getSubTags()) {
final String className = tag.getAttributeValue("name");
if (!Comparing.strEqual(className, externalName) && !Comparing.strEqual(className, oldExternalName)) {
continue;
}
for (XmlTag annotationTag : tag.getSubTags()) {
final String annotationFQN = annotationTag.getAttributeValue("name");
final StringBuilder buf = new StringBuilder();
for (XmlTag annotationParameter : annotationTag.getSubTags()) {
buf.append(",");
final String nameValue = annotationParameter.getAttributeValue("name");
if (nameValue != null) {
buf.append(nameValue).append("=");
}
buf.append(StringUtil.unescapeXml(annotationParameter.getAttributeValue("val")));
}
final String annotationText =
"@" + annotationFQN + (buf.length() > 0 ? "(" + StringUtil.trimStart(buf.toString(), ",") + ")" : "");
try {
result.put(annotationFQN,
JavaPsiFacade.getInstance(listOwner.getProject()).getElementFactory().createAnnotationFromText(
annotationText, null));
}
catch (IncorrectOperationException e) {
LOG.error(e);
}
}
}
@@ -181,9 +180,9 @@ public class ExternalAnnotationsManagerImpl extends ExternalAnnotationsManager {
}
public void annotateExternally(final PsiModifierListOwner listOwner,
final String annotationFQName,
final PsiFile fromFile,
public void annotateExternally(@NotNull final PsiModifierListOwner listOwner,
@NotNull final String annotationFQName,
@NotNull final PsiFile fromFile,
final PsiNameValuePair[] value) {
final Project project = listOwner.getProject();
final PsiFile containingFile = listOwner.getContainingFile();
@@ -246,7 +245,7 @@ public class ExternalAnnotationsManagerImpl extends ExternalAnnotationsManager {
}
}
private void chooseRootAndAnnotateExternally(final PsiModifierListOwner listOwner, final String annotationFQName, final PsiFile fromFile,
private void chooseRootAndAnnotateExternally(final PsiModifierListOwner listOwner, final String annotationFQName, @NotNull final PsiFile fromFile,
final Project project, final String packageName, final VirtualFile virtualFile,
final VirtualFile[] virtualFiles, final PsiNameValuePair[] value) {
if (virtualFiles.length > 1) {
@@ -277,7 +276,7 @@ public class ExternalAnnotationsManagerImpl extends ExternalAnnotationsManager {
final String packageName,
final VirtualFile virtualFile,
final String annotationFQName,
final PsiFile fromFile,
@NotNull final PsiFile fromFile,
final PsiNameValuePair[] value) {
final XmlFile[] annotationsXml = new XmlFile[1];
List<XmlFile> xmlFiles = findExternalAnnotationsFile(listOwner);
@@ -309,7 +308,7 @@ public class ExternalAnnotationsManagerImpl extends ExternalAnnotationsManager {
}.execute();
}
public boolean deannotate(final PsiModifierListOwner listOwner, final String annotationFQN) {
public boolean deannotate(@NotNull final PsiModifierListOwner listOwner, @NotNull final String annotationFQN) {
final List<XmlFile> files = findExternalAnnotationsFile(listOwner);
if (files != null) {
for (XmlFile file : files) {
@@ -440,7 +439,7 @@ public class ExternalAnnotationsManagerImpl extends ExternalAnnotationsManager {
private static void annotateExternally(final PsiModifierListOwner listOwner,
final String annotationFQName,
@Nullable final XmlFile xmlFile,
final PsiFile codeUsageFile, PsiNameValuePair[] values) {
@NotNull PsiFile codeUsageFile, PsiNameValuePair[] values) {
if (xmlFile == null) return;
try {
final XmlDocument document = xmlFile.getDocument();
@@ -535,7 +534,7 @@ public class ExternalAnnotationsManagerImpl extends ExternalAnnotationsManager {
}
@Nullable
private List<XmlFile> findExternalAnnotationsFile(PsiModifierListOwner listOwner) {
private List<XmlFile> findExternalAnnotationsFile(@NotNull PsiModifierListOwner listOwner) {
final Project project = listOwner.getProject();
final PsiFile containingFile = listOwner.getContainingFile();
if (containingFile instanceof PsiJavaFile) {
@@ -90,7 +90,7 @@ public class ModifierChooser {
final String[] keywords = keywordSets[keywordSets.length - i - 1];
boolean containModifierFlag = false;
if (list != null) {
for (@Modifier String keyword : keywords) {
for (String keyword : keywords) {
if (list.hasExplicitModifier(keyword)) {
containModifierFlag = true;
break;
@@ -18,6 +18,7 @@ package com.intellij.codeInsight.daemon.impl.analysis;
import com.intellij.lang.LangBundle;
import com.intellij.psi.*;
import com.intellij.psi.util.PsiFormatUtil;
import com.intellij.psi.util.PsiFormatUtilBase;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -41,8 +42,8 @@ public class HighlightMessageUtil {
}
else if (symbol instanceof PsiMethod) {
symbolName = PsiFormatUtil.formatMethod((PsiMethod)symbol,
substitutor, PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS,
PsiFormatUtil.SHOW_TYPE | PsiFormatUtil.SHOW_FQ_CLASS_NAMES);
substitutor, PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_PARAMETERS,
PsiFormatUtilBase.SHOW_TYPE | PsiFormatUtilBase.SHOW_FQ_CLASS_NAMES);
}
else if (symbol instanceof PsiVariable) {
symbolName = ((PsiVariable)symbol).getName();
@@ -400,7 +400,7 @@ public class CreateFromUsageUtils {
return null;
}
if (!facade.getResolveHelper().isAccessible(targetClass, contextElement, null)) {
PsiUtil.setModifierProperty(targetClass, PsiKeyword.PUBLIC, true);
PsiUtil.setModifierProperty(targetClass, PsiModifier.PUBLIC, true);
}
}
else { //tests
@@ -25,6 +25,7 @@ import com.intellij.openapi.util.Pair;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
import com.intellij.psi.util.PsiFormatUtil;
import com.intellij.psi.util.PsiFormatUtilBase;
import com.intellij.util.Function;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.ContainerUtil;
@@ -50,8 +51,11 @@ public class CreateMethodQuickFix implements LocalQuickFix {
public String getName() {
String signature = PsiFormatUtil.formatMethod(createMethod(myTargetClass.getProject()), PsiSubstitutor.EMPTY,
PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_TYPE | PsiFormatUtil.SHOW_PARAMETERS | PsiFormatUtil.SHOW_RAW_TYPE,
PsiFormatUtil.SHOW_TYPE | PsiFormatUtil.SHOW_RAW_TYPE, 2);
PsiFormatUtilBase.SHOW_NAME |
PsiFormatUtilBase.SHOW_TYPE |
PsiFormatUtilBase.SHOW_PARAMETERS |
PsiFormatUtilBase.SHOW_RAW_TYPE,
PsiFormatUtilBase.SHOW_TYPE | PsiFormatUtilBase.SHOW_RAW_TYPE, 2);
return QuickFixBundle.message("create.method.from.usage.text", signature);
}
@@ -95,7 +95,7 @@ public class CreateParameterFromUsageFix extends CreateVarFromUsageFix {
if (ApplicationManager.getApplication().isUnitTestMode()) {
ParameterInfoImpl[] array = parameterInfos.toArray(new ParameterInfoImpl[parameterInfos.size()]);
@Modifier String modifier = PsiUtil.getAccessModifier(PsiUtil.getAccessLevel(method.getModifierList()));
String modifier = PsiUtil.getAccessModifier(PsiUtil.getAccessLevel(method.getModifierList()));
ChangeSignatureProcessor processor =
new ChangeSignatureProcessor(project, method, false, modifier, method.getName(), method.getReturnType(), array);
processor.run();
@@ -18,9 +18,9 @@ package com.intellij.codeInsight.generation.ui;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
import com.intellij.psi.PsiField;
import com.intellij.psi.PsiNamedElement;
import com.intellij.psi.PsiSubstitutor;
import com.intellij.psi.util.PsiFormatUtil;
import com.intellij.psi.util.PsiFormatUtilBase;
import com.intellij.ui.components.JBList;
import javax.swing.*;
@@ -68,14 +68,14 @@ public class SimpleFieldChooser extends DialogWrapper {
return myList.getSelectedValues();
}
private class MyListCellRenderer extends DefaultListCellRenderer {
private static class MyListCellRenderer extends DefaultListCellRenderer {
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Icon icon = null;
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
Icon icon = null;
if (value instanceof PsiField) {
PsiField field = (PsiField)value;
icon = field.getIcon(0);
final String text = PsiFormatUtil.formatVariable(field, PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_TYPE, PsiSubstitutor.EMPTY);
final String text = PsiFormatUtil.formatVariable(field, PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_TYPE, PsiSubstitutor.EMPTY);
setText(text);
}
super.setIcon(icon);
@@ -144,21 +144,23 @@ public class DfaUtil {
return codeBlock;
}
@NotNull
public static Collection<? extends PsiElement> getPossibleInitializationElements(final PsiElement qualifierExpression) {
if (qualifierExpression instanceof PsiMethodCallExpression) {
return Collections.singletonList(qualifierExpression);
}
else if (qualifierExpression instanceof PsiReferenceExpression) {
if (qualifierExpression instanceof PsiReferenceExpression) {
final PsiElement targetElement = ((PsiReferenceExpression)qualifierExpression).resolve();
if (targetElement instanceof PsiVariable) {
final Collection<? extends PsiElement> variableValues = getCachedVariableValues((PsiVariable)targetElement, qualifierExpression);
if ((variableValues == null || variableValues.isEmpty())) {
return getVariableAssignmentsInFile((PsiVariable)targetElement, false, qualifierExpression);
}
return variableValues;
if (!(targetElement instanceof PsiVariable)) {
return Collections.emptyList();
}
final Collection<? extends PsiElement> variableValues = getCachedVariableValues((PsiVariable)targetElement, qualifierExpression);
if (variableValues == null || variableValues.isEmpty()) {
return getVariableAssignmentsInFile((PsiVariable)targetElement, false, qualifierExpression);
}
return variableValues;
}
else if (qualifierExpression instanceof PsiLiteralExpression) {
if (qualifierExpression instanceof PsiLiteralExpression) {
return Collections.singletonList(qualifierExpression);
}
return Collections.emptyList();
@@ -239,7 +241,7 @@ public class DfaUtil {
final Set<PsiVariable> myNotNulls = new THashSet<PsiVariable>();
private final PsiElement myContext;
public ValuableInstructionVisitor(PsiElement context) {
public ValuableInstructionVisitor(@NotNull PsiElement context) {
myContext = context;
}
@@ -152,7 +152,6 @@ public abstract class RefJavaElementImpl extends RefElementImpl implements RefJa
setFlag(b, IS_SYNTHETIC_JSP_ELEMENT);
}
@Modifier
@Nullable
public String getAccessModifier() {
long access_id = myFlags & ACCESS_MODIFIER_MASK;
@@ -46,6 +46,7 @@ import com.intellij.psi.infos.CandidateInfo;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.javadoc.PsiDocTag;
import com.intellij.psi.util.PsiFormatUtil;
import com.intellij.psi.util.PsiFormatUtilBase;
import com.intellij.util.StringBuilderSpinAllocator;
import com.intellij.util.containers.HashMap;
import org.jetbrains.annotations.NonNls;
@@ -130,7 +131,7 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
}
private static void generateModifiers(StringBuilder buffer, PsiElement element) {
String modifiers = PsiFormatUtil.formatModifiers(element, PsiFormatUtil.JAVADOC_MODIFIERS_ONLY);
String modifiers = PsiFormatUtil.formatModifiers(element, PsiFormatUtilBase.JAVADOC_MODIFIERS_ONLY);
if (modifiers.length() > 0) {
buffer.append(modifiers);
@@ -531,8 +532,10 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
}
final String str = PsiFormatUtil.formatMethod((PsiMethod)element, candidate.getSubstitutor(),
PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_TYPE | PsiFormatUtil.SHOW_PARAMETERS,
PsiFormatUtil.SHOW_TYPE);
PsiFormatUtilBase.SHOW_NAME |
PsiFormatUtilBase.SHOW_TYPE |
PsiFormatUtilBase.SHOW_PARAMETERS,
PsiFormatUtilBase.SHOW_TYPE);
createElementLink(sb, element, StringUtil.escapeXml(str));
}
@@ -583,8 +586,8 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
urls.add(classUrl + "#" + signature);
}
signature = PsiFormatUtil.formatMethod(method, PsiSubstitutor.EMPTY,
PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS,
PsiFormatUtil.SHOW_TYPE | PsiFormatUtil.SHOW_FQ_CLASS_NAMES, 999);
PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_PARAMETERS,
PsiFormatUtilBase.SHOW_TYPE | PsiFormatUtilBase.SHOW_FQ_CLASS_NAMES, 999);
for (String classUrl : classUrls) {
urls.add(classUrl + "#" + signature);
}
@@ -614,8 +617,12 @@ public class JavaDocumentationProvider implements CodeDocumentationProvider, Ext
public static String formatMethodSignature(PsiMethod method) {
return PsiFormatUtil.formatMethod(method, PsiSubstitutor.EMPTY,
PsiFormatUtil.SHOW_NAME | PsiFormatUtil.SHOW_PARAMETERS | PsiFormatUtil.SHOW_RAW_NON_TOP_TYPE,
PsiFormatUtil.SHOW_TYPE | PsiFormatUtil.SHOW_FQ_CLASS_NAMES | PsiFormatUtil.SHOW_RAW_NON_TOP_TYPE,
PsiFormatUtilBase.SHOW_NAME |
PsiFormatUtilBase.SHOW_PARAMETERS |
PsiFormatUtilBase.SHOW_RAW_NON_TOP_TYPE,
PsiFormatUtilBase.SHOW_TYPE |
PsiFormatUtilBase.SHOW_FQ_CLASS_NAMES |
PsiFormatUtilBase.SHOW_RAW_NON_TOP_TYPE,
999);
}
@@ -119,7 +119,7 @@ public class LightField extends LightElement implements PsiField {
}
@Override
public boolean hasModifierProperty(@Modifier @NonNls @NotNull final String name) {
public boolean hasModifierProperty(@NonNls @NotNull final String name) {
return myField.hasModifierProperty(name);
}
@@ -33,6 +33,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.presentation.java.SymbolPresentationUtil;
import com.intellij.psi.util.PsiFormatUtil;
import com.intellij.psi.util.PsiFormatUtilBase;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.refactoring.RefactoringBundle;
import com.intellij.refactoring.typeMigration.ChangeTypeSignatureHandler;
@@ -456,28 +457,19 @@ public class MigrationPanel extends JPanel implements Disposable {
else {
final PsiMember member = PsiTreeUtil.getParentOfType(element, PsiMember.class);
if (member instanceof PsiField) {
location = PsiFormatUtil.formatVariable((PsiVariable)member, PsiFormatUtil
.SHOW_NAME |
PsiFormatUtil
.SHOW_CONTAINING_CLASS |
PsiFormatUtil
.SHOW_FQ_NAME, PsiSubstitutor.EMPTY);
location = PsiFormatUtil.formatVariable((PsiVariable)member, PsiFormatUtilBase.SHOW_NAME |
PsiFormatUtilBase.SHOW_CONTAINING_CLASS |
PsiFormatUtilBase.SHOW_FQ_NAME, PsiSubstitutor.EMPTY);
}
else if (member instanceof PsiMethod) {
location = PsiFormatUtil.formatMethod((PsiMethod)member, PsiSubstitutor.EMPTY, PsiFormatUtil
.SHOW_NAME |
PsiFormatUtil
.SHOW_CONTAINING_CLASS |
PsiFormatUtil
.SHOW_FQ_NAME, PsiFormatUtil.SHOW_TYPE);
location = PsiFormatUtil.formatMethod((PsiMethod)member, PsiSubstitutor.EMPTY, PsiFormatUtilBase.SHOW_NAME |
PsiFormatUtilBase.SHOW_CONTAINING_CLASS |
PsiFormatUtilBase.SHOW_FQ_NAME,
PsiFormatUtilBase.SHOW_TYPE);
}
else if (member instanceof PsiClass) {
location = PsiFormatUtil.formatClass((PsiClass)member, PsiFormatUtil
.SHOW_NAME |
PsiFormatUtil
.SHOW_CONTAINING_CLASS |
PsiFormatUtil
.SHOW_FQ_NAME);
location = PsiFormatUtil.formatClass((PsiClass)member, PsiFormatUtilBase.SHOW_NAME |
PsiFormatUtilBase.SHOW_FQ_NAME);
}
else {
location = null;
@@ -369,7 +369,7 @@ public class MethodDuplicatesHandler implements RefactoringActionHandler {
@Nullable
public String getConfirmDuplicatePrompt(final Match match) {
final PsiElement matchStart = match.getMatchStart();
@Modifier String visibility = VisibilityUtil.getPossibleVisibility(myMethod, matchStart);
String visibility = VisibilityUtil.getPossibleVisibility(myMethod, matchStart);
final boolean shouldBeStatic = isEssentialStaticContextAbsent(match);
final String signature = match.getChangedSignature(myMethod, myMethod.hasModifierProperty(PsiModifier.STATIC) || shouldBeStatic, visibility);
if (signature != null) {