mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 22:51:17 +07:00
[java] create annotation value() method from usage (IDEA-350345)
GitOrigin-RevId: 3596e1f35ce3f603789c69f90b28aacaf448866a
This commit is contained in:
committed by
intellij-monorepo-bot
parent
1fd9cf454d
commit
9414c123b8
@@ -1,4 +1,4 @@
|
|||||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||||
package com.intellij.codeInsight.daemon.impl.quickfix;
|
package com.intellij.codeInsight.daemon.impl.quickfix;
|
||||||
|
|
||||||
import com.intellij.codeInsight.ExpectedTypeInfo;
|
import com.intellij.codeInsight.ExpectedTypeInfo;
|
||||||
@@ -8,6 +8,7 @@ import com.intellij.codeInsight.daemon.QuickFixBundle;
|
|||||||
import com.intellij.codeInsight.daemon.impl.analysis.AnnotationsHighlightUtil;
|
import com.intellij.codeInsight.daemon.impl.analysis.AnnotationsHighlightUtil;
|
||||||
import com.intellij.codeInsight.intention.preview.IntentionPreviewInfo;
|
import com.intellij.codeInsight.intention.preview.IntentionPreviewInfo;
|
||||||
import com.intellij.ide.highlighter.JavaFileType;
|
import com.intellij.ide.highlighter.JavaFileType;
|
||||||
|
import com.intellij.java.JavaBundle;
|
||||||
import com.intellij.openapi.diagnostic.Logger;
|
import com.intellij.openapi.diagnostic.Logger;
|
||||||
import com.intellij.openapi.editor.Editor;
|
import com.intellij.openapi.editor.Editor;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
@@ -15,6 +16,7 @@ import com.intellij.psi.*;
|
|||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import com.intellij.psi.util.TypeConversionUtil;
|
import com.intellij.psi.util.TypeConversionUtil;
|
||||||
import com.intellij.util.IncorrectOperationException;
|
import com.intellij.util.IncorrectOperationException;
|
||||||
|
import com.intellij.util.ObjectUtils;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@@ -36,10 +38,11 @@ public class CreateAnnotationMethodFromUsageFix extends CreateFromUsageBaseFix {
|
|||||||
final PsiNameValuePair call = getNameValuePair();
|
final PsiNameValuePair call = getNameValuePair();
|
||||||
if (call == null || !call.isValid()) return false;
|
if (call == null || !call.isValid()) return false;
|
||||||
String name = call.getName();
|
String name = call.getName();
|
||||||
|
if (name == null) name = PsiAnnotation.DEFAULT_REFERENCED_METHOD_NAME;
|
||||||
|
|
||||||
if (name == null || !PsiNameHelper.getInstance(call.getProject()).isIdentifier(name)) return false;
|
if (!PsiNameHelper.getInstance(call.getProject()).isIdentifier(name)) return false;
|
||||||
if (getAnnotationValueType(call.getValue()) == null) return false;
|
if (getAnnotationValueType(call.getValue()) == null) return false;
|
||||||
setText(QuickFixBundle.message("create.method.from.usage.text", name));
|
setText(JavaBundle.message("intention.create.annotation.method.from.usage", name));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,10 +65,9 @@ public class CreateAnnotationMethodFromUsageFix extends CreateFromUsageBaseFix {
|
|||||||
if (nameValuePair == null || classes.isEmpty()) return IntentionPreviewInfo.EMPTY;
|
if (nameValuePair == null || classes.isEmpty()) return IntentionPreviewInfo.EMPTY;
|
||||||
final PsiType type = getAnnotationValueType(nameValuePair.getValue());
|
final PsiType type = getAnnotationValueType(nameValuePair.getValue());
|
||||||
PsiClass targetClass = classes.get(0);
|
PsiClass targetClass = classes.get(0);
|
||||||
String methodName = Objects.requireNonNull(nameValuePair.getName());
|
String methodName = ObjectUtils.notNull(nameValuePair.getName(), PsiAnnotation.DEFAULT_REFERENCED_METHOD_NAME);
|
||||||
return new IntentionPreviewInfo.CustomDiff(JavaFileType.INSTANCE, targetClass.getName(),
|
return new IntentionPreviewInfo.CustomDiff(JavaFileType.INSTANCE, targetClass.getName(), "",
|
||||||
"",
|
Objects.requireNonNull(type).getPresentableText() + " " + methodName + "();");
|
||||||
Objects.requireNonNull(type).getPresentableText() + " " + methodName + "()");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void invokeImpl(@NotNull PsiClass targetClass) {
|
private void invokeImpl(@NotNull PsiClass targetClass) {
|
||||||
@@ -74,7 +76,7 @@ public class CreateAnnotationMethodFromUsageFix extends CreateFromUsageBaseFix {
|
|||||||
|
|
||||||
final PsiElementFactory factory = JavaPsiFacade.getElementFactory(nameValuePair.getProject());
|
final PsiElementFactory factory = JavaPsiFacade.getElementFactory(nameValuePair.getProject());
|
||||||
|
|
||||||
final String methodName = nameValuePair.getName();
|
final String methodName = ObjectUtils.notNull(nameValuePair.getName(), PsiAnnotation.DEFAULT_REFERENCED_METHOD_NAME);
|
||||||
LOG.assertTrue(methodName != null);
|
LOG.assertTrue(methodName != null);
|
||||||
|
|
||||||
PsiMethod method = factory.createMethod(methodName, PsiTypes.voidType());
|
PsiMethod method = factory.createMethod(methodName, PsiTypes.voidType());
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// "Create method 'test'" "true-preview"
|
// "Create @interface method 'test()'" "true-preview"
|
||||||
public class Test {
|
public class Test {
|
||||||
@Attr(test= "")
|
@Attr(test= "")
|
||||||
public Test() {
|
public Test() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// "Create method 'test'" "true"
|
// "Create @interface method 'test()'" "true"
|
||||||
public class Test {
|
public class Test {
|
||||||
@Attr(test= {""})
|
@Attr(test= {""})
|
||||||
public Test() {
|
public Test() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// "Create method 'test'" "true-preview"
|
// "Create @interface method 'test()'" "true-preview"
|
||||||
public class Test {
|
public class Test {
|
||||||
@Attr(te<caret>st= "")
|
@Attr(te<caret>st= "")
|
||||||
public Test() {
|
public Test() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// "Create method 'test'" "true"
|
// "Create @interface method 'test()'" "true"
|
||||||
public class Test {
|
public class Test {
|
||||||
@Attr(te<caret>st= {""})
|
@Attr(te<caret>st= {""})
|
||||||
public Test() {
|
public Test() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// "Create method 'test'" "false"
|
// "Create @interface method 'test()'" "false"
|
||||||
public class Test {
|
public class Test {
|
||||||
@Attr(te<caret>st= {"", 1})
|
@Attr(te<caret>st= {"", 1})
|
||||||
public Test() {
|
public Test() {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
// "Create method 'test'" "false"
|
// "Create @interface method 'test()'" "false"
|
||||||
public class Test {
|
public class Test {
|
||||||
@Attr(te<caret>st= {new String[]{""}})
|
@Attr(te<caret>st= {new String[]{""}})
|
||||||
public Test() {
|
public Test() {
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
String test()
|
String test();
|
||||||
@@ -826,6 +826,7 @@ intention.convert.compact.constructor.to.canonical=Convert compact constructor t
|
|||||||
intention.convert.to.single.return.name=Transform body to single exit-point form
|
intention.convert.to.single.return.name=Transform body to single exit-point form
|
||||||
intention.convert.to.single.return.progress.title=Transform body to single exit-point form
|
intention.convert.to.single.return.progress.title=Transform body to single exit-point form
|
||||||
intention.convert.to.single.return.command.text=Transform Body To Single Exit-Point Form
|
intention.convert.to.single.return.command.text=Transform Body To Single Exit-Point Form
|
||||||
|
intention.create.annotation.method.from.usage=Create @interface method ''{0}()''
|
||||||
intention.create.field.from.parameter.family=Create field for parameter
|
intention.create.field.from.parameter.family=Create field for parameter
|
||||||
intention.create.field.from.parameter.text=Create field for parameter ''{0}''
|
intention.create.field.from.parameter.text=Create field for parameter ''{0}''
|
||||||
intention.create.test.dialog.choose.super.class=Choose Superclass
|
intention.create.test.dialog.choose.super.class=Choose Superclass
|
||||||
|
|||||||
Reference in New Issue
Block a user