From b1a377ff2036d9b123e6022271b09b6bdecb56d5 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Wed, 11 Jul 2018 12:36:49 +0200 Subject: [PATCH] non-serializable with serialVersionUID: delegate to safe delete fix (IDEA-195382) --- ...leWithSerialVersionUIDFieldInspection.java | 38 ++++++------------- 1 file changed, 11 insertions(+), 27 deletions(-) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/NonSerializableWithSerialVersionUIDFieldInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/NonSerializableWithSerialVersionUIDFieldInspection.java index a7fc27416c49..819d1058d8b3 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/NonSerializableWithSerialVersionUIDFieldInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/serialization/NonSerializableWithSerialVersionUIDFieldInspection.java @@ -15,16 +15,16 @@ */ package com.siyeh.ig.serialization; -import com.intellij.codeInspection.ProblemDescriptor; -import com.intellij.openapi.project.Project; +import com.intellij.codeInsight.intention.QuickFixFactory; +import com.intellij.codeInspection.LocalQuickFix; import com.intellij.psi.PsiAnonymousClass; import com.intellij.psi.PsiClass; -import com.intellij.psi.PsiElement; import com.intellij.psi.PsiField; import com.siyeh.HardcodedMethodConstants; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; +import com.siyeh.ig.DelegatingFix; import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.fixes.DelegatingFixFactory; import com.siyeh.ig.psiutils.SerializationUtils; @@ -70,31 +70,15 @@ public class NonSerializableWithSerialVersionUIDFieldInspection extends BaseInsp @NotNull protected InspectionGadgetsFix[] buildFixes(Object... infos) { final PsiClass aClass = (PsiClass)infos[0]; + PsiField field = aClass.findFieldByName(HardcodedMethodConstants.SERIAL_VERSION_UID, false); + if (field == null) return InspectionGadgetsFix.EMPTY_ARRAY; + boolean onTheFly = (boolean)infos[1]; + DelegatingFix removeFieldFix = new DelegatingFix((LocalQuickFix)QuickFixFactory.getInstance().createSafeDeleteFix(field)); if (aClass.isAnnotationType() || aClass.isInterface() || aClass instanceof PsiAnonymousClass) { - return new InspectionGadgetsFix[]{new RemoveSerialVersionUIDFix()}; - } - return new InspectionGadgetsFix[]{DelegatingFixFactory.createMakeSerializableFix(aClass), new RemoveSerialVersionUIDFix()}; - } - - private static class RemoveSerialVersionUIDFix extends InspectionGadgetsFix { - - @Override - @NotNull - public String getFamilyName() { - return InspectionGadgetsBundle.message( - "non.serializable.with.serialversionuid.remove.quickfix"); - } - - @Override - public void doFix(Project project, ProblemDescriptor descriptor) { - final PsiElement nameElement = descriptor.getPsiElement(); - final PsiClass aClass = (PsiClass)nameElement.getParent(); - final PsiField field = aClass.findFieldByName(HardcodedMethodConstants.SERIAL_VERSION_UID, false); - if (field == null) { - return; - } - field.delete(); + return onTheFly ? new InspectionGadgetsFix[]{removeFieldFix} : InspectionGadgetsFix.EMPTY_ARRAY; } + return onTheFly ? new InspectionGadgetsFix[]{DelegatingFixFactory.createMakeSerializableFix(aClass), removeFieldFix} + : new InspectionGadgetsFix[]{DelegatingFixFactory.createMakeSerializableFix(aClass)}; } @Override @@ -113,7 +97,7 @@ public class NonSerializableWithSerialVersionUIDFieldInspection extends BaseInsp if (SerializationUtils.isSerializable(aClass)) { return; } - registerClassError(aClass, aClass); + registerClassError(aClass, aClass, isOnTheFly()); } } } \ No newline at end of file