Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDeepak Azad2012-07-20 06:21:39 +0000
committerDeepak Azad2012-07-20 06:21:39 +0000
commita70adae0e222ad35b0a5dc6f3c5fb8df188f15a6 (patch)
tree2cf5685799ce4c75720830b5a8556fbda4260de3
parentb5df3f3ea070137fe77b53c4230959ac339f87cd (diff)
downloadeclipse.jdt.ui-a70adae0e222ad35b0a5dc6f3c5fb8df188f15a6.tar.gz
eclipse.jdt.ui-a70adae0e222ad35b0a5dc6f3c5fb8df188f15a6.tar.xz
eclipse.jdt.ui-a70adae0e222ad35b0a5dc6f3c5fb8df188f15a6.zip
Bug 337977: [quick fix] Add quick fixes for null annotations
- Refactor/Move code around to fit existing patterns
-rw-r--r--org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.java6
-rw-r--r--org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties7
-rw-r--r--org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/NullAnnotationsFix.java (renamed from org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/NullQuickFixes.java)93
-rw-r--r--org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/NullAnnotationsRewriteOperations.java (renamed from org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/NullRewriteOperations.java)25
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.java11
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.properties7
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/NullAnnotationsCleanUp.java4
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/NullAnnotationsCorrectionProcessor.java90
-rw-r--r--org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java7
9 files changed, 136 insertions, 114 deletions
diff --git a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.java b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.java
index 8a5a4d10af..f75d620617 100644
--- a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.java
+++ b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.java
@@ -117,6 +117,12 @@ public final class FixMessages extends NLS {
public static String VariableDeclarationFix_changeModifierOfUnknownToFinal_description;
public static String VariableDeclarationFix_ChangeMidifiersToFinalWherPossible_description;
+ public static String NullAnnotationsFix_add_annotation_change_name;
+ public static String NullAnnotationsRewriteOperations_change_method_parameter_nullness;
+ public static String NullAnnotationsRewriteOperations_change_method_return_nullness;
+ public static String NullAnnotationsRewriteOperations_change_overridden_parameter_nullness;
+ public static String NullAnnotationsRewriteOperations_change_overridden_return_nullness;
+
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, FixMessages.class);
diff --git a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties
index 864cbe88ff..3795284575 100644
--- a/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties
+++ b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/FixMessages.properties
@@ -102,3 +102,10 @@ CodeStyleFix_change_name=Code Style Clean Up
ControlStatementsFix_change_name=Control Statements Clean Up
SortMembersFix_Change_description=Sort Members
SortMembersFix_Fix_description=Sort Members
+
+NullAnnotationsFix_add_annotation_change_name=Add Annotations
+NullAnnotationsRewriteOperations_change_method_parameter_nullness=Change parameter type to ''@{0}''
+NullAnnotationsRewriteOperations_change_method_return_nullness=Change return type of ''{0}(..)'' to ''@{1}''
+NullAnnotationsRewriteOperations_change_overridden_parameter_nullness=Change parameter type in overridden ''{0}(..)'' to ''@{1}''
+NullAnnotationsRewriteOperations_change_overridden_return_nullness=Change return type of overridden ''{0}(..)'' to ''@{1}''
+
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/NullQuickFixes.java b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/NullAnnotationsFix.java
index 8d007f9e21..a7513ba448 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/NullQuickFixes.java
+++ b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/NullAnnotationsFix.java
@@ -9,18 +9,13 @@
* Stephan Herrmann <stephan@cs.tu-berlin.de> - [quick fix] Add quick fixes for null annotations - https://bugs.eclipse.org/337977
* IBM Corporation - bug fixes
*******************************************************************************/
-package org.eclipse.jdt.internal.ui.fix;
+package org.eclipse.jdt.internal.corext.fix;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.HashSet;
-import java.util.Hashtable;
import java.util.List;
-import java.util.Map;
import java.util.Set;
-import org.eclipse.swt.graphics.Image;
-
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.JavaCore;
@@ -33,84 +28,24 @@ import org.eclipse.jdt.core.dom.SimpleName;
import org.eclipse.jdt.core.dom.VariableDeclaration;
import org.eclipse.jdt.internal.corext.dom.ASTNodes;
-import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFix;
-import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFix.CompilationUnitRewriteOperation;
import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
import org.eclipse.jdt.ui.cleanup.ICleanUpFix;
-import org.eclipse.jdt.ui.text.java.IInvocationContext;
import org.eclipse.jdt.ui.text.java.IProblemLocation;
-import org.eclipse.jdt.ui.text.java.correction.ICommandAccess;
-import org.eclipse.jdt.internal.ui.JavaPluginImages;
import org.eclipse.jdt.internal.ui.text.correction.ProblemLocation;
-import org.eclipse.jdt.internal.ui.text.correction.proposals.FixCorrectionProposal;
-
-/**
- * Quick Fixes for null-annotation related problems.
- */
-public class NullQuickFixes {
-
- /** Small adaptation just to make available the 'compilationUnit' passed at instantiation time. */
- private static class MyCURewriteOperationsFix extends CompilationUnitRewriteOperationsFix {
- CompilationUnit cu;
- public MyCURewriteOperationsFix(String name, CompilationUnit compilationUnit, CompilationUnitRewriteOperation[] operations) {
- super(name, compilationUnit, operations);
- this.cu= compilationUnit;
- }
- }
+public class NullAnnotationsFix extends CompilationUnitRewriteOperationsFix {
- public static void addReturnAndArgumentTypeProposal(IInvocationContext context, IProblemLocation problem, Collection<ICommandAccess> proposals) {
- CompilationUnit astRoot= context.getASTRoot();
- ASTNode selectedNode= problem.getCoveringNode(astRoot);
+ private CompilationUnit cu;
- boolean isArgumentProblem= isComplainingAboutArgument(selectedNode);
- if (isArgumentProblem || isComplainingAboutReturn(selectedNode))
- addNullAnnotationInSignatureProposal(context, problem, proposals, false, isArgumentProblem);
+ public NullAnnotationsFix(String name, CompilationUnit compilationUnit, CompilationUnitRewriteOperation[] operations) {
+ super(name, compilationUnit, operations);
+ this.cu= compilationUnit;
}
- public static void addNullAnnotationInSignatureProposal(IInvocationContext context, IProblemLocation problem, Collection<ICommandAccess> proposals, boolean modifyOverridden,
- boolean isArgumentProblem) {
- MyCURewriteOperationsFix fix= createNullAnnotationInSignatureFix(context.getASTRoot(), problem, modifyOverridden, isArgumentProblem);
-
- if (fix != null) {
- Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE);
- Map<String, String> options= new Hashtable<String, String>();
- if (fix.cu != context.getASTRoot()) {
- // workaround: adjust the unit to operate on, depending on the findings of RewriteOperations.createAddAnnotationOperation(..)
- final CompilationUnit cu= fix.cu;
- final IInvocationContext originalContext= context;
- context= new IInvocationContext() {
- public int getSelectionOffset() {
- return originalContext.getSelectionOffset();
- }
-
- public int getSelectionLength() {
- return originalContext.getSelectionLength();
- }
-
- public ASTNode getCoveringNode() {
- return originalContext.getCoveringNode();
- }
-
- public ASTNode getCoveredNode() {
- return originalContext.getCoveredNode();
- }
-
- public ICompilationUnit getCompilationUnit() {
- return (ICompilationUnit) cu.getJavaElement();
- }
-
- public CompilationUnit getASTRoot() {
- return cu;
- }
- };
- }
- int relevance= modifyOverridden ? 9 : 10; //raise local change above change in overridden method
- FixCorrectionProposal proposal= new FixCorrectionProposal(fix, new NullAnnotationsCleanUp(options, problem.getProblemId()), relevance, image, context);
- proposals.add(proposal);
- }
+ public CompilationUnit getCu() {
+ return cu;
}
public static boolean isComplainingAboutArgument(ASTNode selectedNode) {
@@ -132,7 +67,7 @@ public class NullQuickFixes {
return selectedNode.getParent().getNodeType() == ASTNode.RETURN_STATEMENT;
}
- private static MyCURewriteOperationsFix createNullAnnotationInSignatureFix(CompilationUnit compilationUnit, IProblemLocation problem, boolean modifyOverridden, boolean isArgumentProblem) {
+ public static NullAnnotationsFix createNullAnnotationInSignatureFix(CompilationUnit compilationUnit, IProblemLocation problem, boolean modifyOverridden, boolean isArgumentProblem) {
String nullableAnnotationName= getNullableAnnotationName(compilationUnit.getJavaElement(), false);
String nonNullAnnotationName= getNonNullAnnotationName(compilationUnit.getJavaElement(), false);
String annotationToAdd= nullableAnnotationName;
@@ -167,13 +102,13 @@ public class NullQuickFixes {
}
// when performing one change at a time we can actually modify another CU than the current one:
- NullRewriteOperations.SignatureAnnotationRewriteOperation operation= NullRewriteOperations.createAddAnnotationOperation(compilationUnit, problem, annotationToAdd, annotationToRemove, null,
+ NullAnnotationsRewriteOperations.SignatureAnnotationRewriteOperation operation= NullAnnotationsRewriteOperations.createAddAnnotationOperation(compilationUnit, problem, annotationToAdd, annotationToRemove, null,
false/*thisUnitOnly*/, true/*allowRemove*/, modifyOverridden);
if (operation == null)
return null;
- return new MyCURewriteOperationsFix(operation.getMessage(), operation.getCompilationUnit(), // note that this uses the findings from createAddAnnotationOperation(..)
- new NullRewriteOperations.SignatureAnnotationRewriteOperation[] { operation });
+ return new NullAnnotationsFix(operation.getMessage(), operation.getCompilationUnit(), // note that this uses the findings from createAddAnnotationOperation(..)
+ new NullAnnotationsRewriteOperations.SignatureAnnotationRewriteOperation[] { operation });
}
// Entry for NullAnnotationsCleanup:
@@ -196,7 +131,7 @@ public class NullQuickFixes {
if (operations.size() == 0)
return null;
CompilationUnitRewriteOperation[] operationsArray= operations.toArray(new CompilationUnitRewriteOperation[operations.size()]);
- return new MyCURewriteOperationsFix(MultiFixMessages.NullQuickFixes_add_annotation_change_name, compilationUnit, operationsArray);
+ return new NullAnnotationsFix(FixMessages.NullAnnotationsFix_add_annotation_change_name, compilationUnit, operationsArray);
}
private static void createAddNullAnnotationOperations(CompilationUnit compilationUnit, IProblemLocation[] locations, List<CompilationUnitRewriteOperation> result) {
@@ -230,7 +165,7 @@ public class NullQuickFixes {
// all others propose to add @Nullable
}
// when performing multiple changes we can only modify the one CU that the CleanUp infrastructure provides to the operation.
- CompilationUnitRewriteOperation fix= NullRewriteOperations.createAddAnnotationOperation(compilationUnit, problem, annotationToAdd, annotationToRemove, handledPositions,
+ CompilationUnitRewriteOperation fix= NullAnnotationsRewriteOperations.createAddAnnotationOperation(compilationUnit, problem, annotationToAdd, annotationToRemove, handledPositions,
true/*thisUnitOnly*/, false/*allowRemove*/, false/*modifyOverridden*/);
if (fix != null)
result.add(fix);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/NullRewriteOperations.java b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/NullAnnotationsRewriteOperations.java
index 546b3cbb97..88cb3a64d2 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/NullRewriteOperations.java
+++ b/org.eclipse.jdt.ui/core extension/org/eclipse/jdt/internal/corext/fix/NullAnnotationsRewriteOperations.java
@@ -9,7 +9,7 @@
* Stephan Herrmann <stephan@cs.tu-berlin.de> - [quick fix] Add quick fixes for null annotations - https://bugs.eclipse.org/337977
* IBM Corporation - bug fixes
*******************************************************************************/
-package org.eclipse.jdt.internal.ui.fix;
+package org.eclipse.jdt.internal.corext.fix;
import java.util.List;
import java.util.Set;
@@ -44,7 +44,6 @@ import org.eclipse.jdt.core.dom.rewrite.ListRewrite;
import org.eclipse.jdt.internal.corext.dom.ASTNodes;
import org.eclipse.jdt.internal.corext.dom.Bindings;
import org.eclipse.jdt.internal.corext.fix.CompilationUnitRewriteOperationsFix.CompilationUnitRewriteOperation;
-import org.eclipse.jdt.internal.corext.fix.LinkedProposalModel;
import org.eclipse.jdt.internal.corext.refactoring.structure.CompilationUnitRewrite;
import org.eclipse.jdt.internal.corext.util.JavaModelUtil;
import org.eclipse.jdt.internal.corext.util.Messages;
@@ -54,7 +53,7 @@ import org.eclipse.jdt.ui.text.java.IProblemLocation;
import org.eclipse.jdt.internal.ui.text.correction.ASTResolving;
import org.eclipse.jdt.internal.ui.viewsupport.BasicElementLabels;
-public class NullRewriteOperations {
+public class NullAnnotationsRewriteOperations {
static abstract class SignatureAnnotationRewriteOperation extends CompilationUnitRewriteOperation {
String fAnnotationToAdd;
@@ -218,7 +217,7 @@ public class NullRewriteOperations {
break; // do propose changes even if we already have an annotation
default:
// if this method has annotations, don't change'em
- if (NullQuickFixes.hasExplicitNullAnnotation(cu, problem.getOffset()))
+ if (NullAnnotationsFix.hasExplicitNullAnnotation(cu, problem.getOffset()))
return null;
}
@@ -241,7 +240,7 @@ public class NullRewriteOperations {
ASTNode methodDecl= compilationUnit.findDeclaringNode(methodBinding.getKey());
if (methodDecl == null)
return null;
- String message= Messages.format(MultiFixMessages.NullRewriteOperations_change_method_parameter_nullness, annotationNameLabel);
+ String message= Messages.format(FixMessages.NullAnnotationsRewriteOperations_change_method_parameter_nullness, annotationNameLabel);
return new ParameterAnnotationRewriteOperation(compilationUnit, (MethodDeclaration) methodDecl, annotationToAdd, annotationToRemove, paramIdx, allowRemove, message);
} else if (declaringNode instanceof MethodDeclaration) {
// complaint is in signature of this method
@@ -257,7 +256,7 @@ public class NullRewriteOperations {
if (declaration.getNodeType() == ASTNode.METHOD_DECLARATION) {
String paramName= findAffectedParameterName(selectedNode);
if (paramName != null) {
- String message= Messages.format(MultiFixMessages.NullRewriteOperations_change_method_parameter_nullness, annotationNameLabel);
+ String message= Messages.format(FixMessages.NullAnnotationsRewriteOperations_change_method_parameter_nullness, annotationNameLabel);
return new ParameterAnnotationRewriteOperation(compilationUnit, declaration, annotationToAdd, annotationToRemove, paramName, allowRemove, message);
}
}
@@ -266,13 +265,13 @@ public class NullRewriteOperations {
case IProblem.RequiredNonNullButProvidedPotentialNull:
case IProblem.RequiredNonNullButProvidedSpecdNullable:
case IProblem.RequiredNonNullButProvidedUnknown:
- if (NullQuickFixes.isComplainingAboutArgument(selectedNode)) {
+ if (NullAnnotationsFix.isComplainingAboutArgument(selectedNode)) {
//TODO: duplication
// statements suggest changing parameters:
if (declaration.getNodeType() == ASTNode.METHOD_DECLARATION) {
String paramName= findAffectedParameterName(selectedNode);
if (paramName != null) {
- String message= Messages.format(MultiFixMessages.NullRewriteOperations_change_method_parameter_nullness, annotationNameLabel);
+ String message= Messages.format(FixMessages.NullAnnotationsRewriteOperations_change_method_parameter_nullness, annotationNameLabel);
return new ParameterAnnotationRewriteOperation(compilationUnit, declaration, annotationToAdd, annotationToRemove, paramName, allowRemove, message);
}
}
@@ -280,7 +279,7 @@ public class NullRewriteOperations {
}
//$FALL-THROUGH$
case IProblem.IllegalReturnNullityRedefinition:
- String message= Messages.format(MultiFixMessages.NullRewriteOperations_change_method_return_nullness, new String[] { declaration.getName().getIdentifier(), annotationNameLabel });
+ String message= Messages.format(FixMessages.NullAnnotationsRewriteOperations_change_method_return_nullness, new String[] { declaration.getName().getIdentifier(), annotationNameLabel });
return new ReturnAnnotationRewriteOperation(compilationUnit, declaration, annotationToAdd, annotationToRemove, allowRemove, message);
}
}
@@ -348,7 +347,7 @@ public class NullRewriteOperations {
if (methodDecl == null)
return null;
declaration= (MethodDeclaration) methodDecl;
- String message= Messages.format(MultiFixMessages.NullRewriteOperations_change_overridden_parameter_nullness, new String[] { overridden.getName(), annotationNameLabel });
+ String message= Messages.format(FixMessages.NullAnnotationsRewriteOperations_change_overridden_parameter_nullness, new String[] { overridden.getName(), annotationNameLabel });
String paramName= findAffectedParameterName(selectedNode);
return new ParameterAnnotationRewriteOperation(compilationUnit, declaration, annotationToAdd, annotationToRemove, paramName, allowRemove, message);
}
@@ -368,8 +367,8 @@ public class NullRewriteOperations {
private static boolean hasNullAnnotation(MethodDeclaration decl) {
List<IExtendedModifier> modifiers= decl.modifiers();
- String nonnull= NullQuickFixes.getNonNullAnnotationName(decl.resolveBinding().getJavaElement(), false);
- String nullable= NullQuickFixes.getNullableAnnotationName(decl.resolveBinding().getJavaElement(), false);
+ String nonnull= NullAnnotationsFix.getNonNullAnnotationName(decl.resolveBinding().getJavaElement(), false);
+ String nullable= NullAnnotationsFix.getNullableAnnotationName(decl.resolveBinding().getJavaElement(), false);
for (Object mod : modifiers) {
if (mod instanceof Annotation) {
Name annotationName= ((Annotation) mod).getTypeName();
@@ -402,7 +401,7 @@ public class NullRewriteOperations {
// TODO(SH): decide whether we want to propose overwriting existing annotations in super
// if (hasNullAnnotation(declaration)) // if overridden has explicit declaration don't propose to change it
// return null;
- String message= Messages.format(MultiFixMessages.NullRewriteOperations_change_overridden_return_nullness, new String[] { overridden.getName(), annotationNameLabel });
+ String message= Messages.format(FixMessages.NullAnnotationsRewriteOperations_change_overridden_return_nullness, new String[] { overridden.getName(), annotationNameLabel });
return new ReturnAnnotationRewriteOperation(compilationUnit, declaration, annotationToAdd, annotationToRemove, allowRemove, message);
}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.java
index 212e693994..8e79452aa3 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.java
@@ -96,19 +96,8 @@ public class MultiFixMessages extends NLS {
public static String CodeFormatFix_description;
public static String NullAnnotationsCleanUp_add_nullable_annotation;
-
public static String NullAnnotationsCleanUp_add_nonnull_annotation;
- public static String NullQuickFixes_add_annotation_change_name;
-
- public static String NullRewriteOperations_change_method_parameter_nullness;
-
- public static String NullRewriteOperations_change_method_return_nullness;
-
- public static String NullRewriteOperations_change_overridden_parameter_nullness;
-
- public static String NullRewriteOperations_change_overridden_return_nullness;
-
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, MultiFixMessages.class);
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.properties b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.properties
index 85d52f6235..84a77cd5ea 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.properties
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/MultiFixMessages.properties
@@ -83,9 +83,4 @@ SortMembersCleanUp_Excluding_description=Sort members excluding fields, enum con
SortMembersCleanUp_RemoveMarkersWarning0=The file ''{0}'' in project ''{1}'' contains markers which may be removed by Sort Members
NullAnnotationsCleanUp_add_nullable_annotation=Add missing @Nullable annotation
-NullAnnotationsCleanUp_add_nonnull_annotation=Add missing @NonNull annotation
-NullQuickFixes_add_annotation_change_name=Add Annotations
-NullRewriteOperations_change_method_parameter_nullness=Change parameter type to ''@{0}''
-NullRewriteOperations_change_method_return_nullness=Change return type of ''{0}(..)'' to ''@{1}''
-NullRewriteOperations_change_overridden_parameter_nullness=Change parameter type in overridden ''{0}(..)'' to ''@{1}''
-NullRewriteOperations_change_overridden_return_nullness=Change return type of overridden ''{0}(..)'' to ''@{1}''
+NullAnnotationsCleanUp_add_nonnull_annotation=Add missing @NonNull annotation \ No newline at end of file
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/NullAnnotationsCleanUp.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/NullAnnotationsCleanUp.java
index 3922086365..fe8072ff9e 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/NullAnnotationsCleanUp.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/fix/NullAnnotationsCleanUp.java
@@ -23,6 +23,8 @@ import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.compiler.IProblem;
import org.eclipse.jdt.core.dom.CompilationUnit;
+import org.eclipse.jdt.internal.corext.fix.NullAnnotationsFix;
+
import org.eclipse.jdt.ui.cleanup.CleanUpRequirements;
import org.eclipse.jdt.ui.cleanup.ICleanUpFix;
import org.eclipse.jdt.ui.text.java.IProblemLocation;
@@ -75,7 +77,7 @@ public class NullAnnotationsCleanUp extends AbstractMultiFix {
}
locations= filteredLocations.toArray(new IProblemLocation[filteredLocations.size()]);
}
- return NullQuickFixes.createCleanUp(compilationUnit, locations, this.handledProblemID);
+ return NullAnnotationsFix.createCleanUp(compilationUnit, locations, this.handledProblemID);
}
private Map<String, String> getRequiredOptions() {
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/NullAnnotationsCorrectionProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/NullAnnotationsCorrectionProcessor.java
new file mode 100644
index 0000000000..0694b4b9d2
--- /dev/null
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/NullAnnotationsCorrectionProcessor.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (c) 2011, 2012 GK Software AG and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Stephan Herrmann <stephan@cs.tu-berlin.de> - [quick fix] Add quick fixes for null annotations - https://bugs.eclipse.org/337977
+ * IBM Corporation - bug fixes
+ *******************************************************************************/
+package org.eclipse.jdt.internal.ui.text.correction;
+
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Map;
+
+import org.eclipse.swt.graphics.Image;
+
+import org.eclipse.jdt.core.ICompilationUnit;
+import org.eclipse.jdt.core.dom.ASTNode;
+import org.eclipse.jdt.core.dom.CompilationUnit;
+
+import org.eclipse.jdt.internal.corext.fix.NullAnnotationsFix;
+
+import org.eclipse.jdt.ui.text.java.IInvocationContext;
+import org.eclipse.jdt.ui.text.java.IProblemLocation;
+import org.eclipse.jdt.ui.text.java.correction.ICommandAccess;
+
+import org.eclipse.jdt.internal.ui.JavaPluginImages;
+import org.eclipse.jdt.internal.ui.fix.NullAnnotationsCleanUp;
+import org.eclipse.jdt.internal.ui.text.correction.proposals.FixCorrectionProposal;
+
+/**
+ * Quick Fixes for null-annotation related problems.
+ */
+public class NullAnnotationsCorrectionProcessor {
+
+ public static void addReturnAndArgumentTypeProposal(IInvocationContext context, IProblemLocation problem, Collection<ICommandAccess> proposals) {
+ CompilationUnit astRoot= context.getASTRoot();
+ ASTNode selectedNode= problem.getCoveringNode(astRoot);
+
+ boolean isArgumentProblem= NullAnnotationsFix.isComplainingAboutArgument(selectedNode);
+ if (isArgumentProblem || NullAnnotationsFix.isComplainingAboutReturn(selectedNode))
+ addNullAnnotationInSignatureProposal(context, problem, proposals, false, isArgumentProblem);
+ }
+
+ public static void addNullAnnotationInSignatureProposal(IInvocationContext context, IProblemLocation problem, Collection<ICommandAccess> proposals, boolean modifyOverridden,
+ boolean isArgumentProblem) {
+ NullAnnotationsFix fix= NullAnnotationsFix.createNullAnnotationInSignatureFix(context.getASTRoot(), problem, modifyOverridden, isArgumentProblem);
+
+ if (fix != null) {
+ Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE);
+ Map<String, String> options= new Hashtable<String, String>();
+ if (fix.getCu() != context.getASTRoot()) {
+ // workaround: adjust the unit to operate on, depending on the findings of RewriteOperations.createAddAnnotationOperation(..)
+ final CompilationUnit cu= fix.getCu();
+ final IInvocationContext originalContext= context;
+ context= new IInvocationContext() {
+ public int getSelectionOffset() {
+ return originalContext.getSelectionOffset();
+ }
+
+ public int getSelectionLength() {
+ return originalContext.getSelectionLength();
+ }
+
+ public ASTNode getCoveringNode() {
+ return originalContext.getCoveringNode();
+ }
+
+ public ASTNode getCoveredNode() {
+ return originalContext.getCoveredNode();
+ }
+
+ public ICompilationUnit getCompilationUnit() {
+ return (ICompilationUnit) cu.getJavaElement();
+ }
+
+ public CompilationUnit getASTRoot() {
+ return cu;
+ }
+ };
+ }
+ int relevance= modifyOverridden ? 9 : 10; //raise local change above change in overridden method
+ FixCorrectionProposal proposal= new FixCorrectionProposal(fix, new NullAnnotationsCleanUp(options, problem.getProblemId()), relevance, image, context);
+ proposals.add(proposal);
+ }
+ }
+}
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java
index 5d9bee6bf8..223adbb3a9 100644
--- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java
+++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/QuickFixProcessor.java
@@ -31,7 +31,6 @@ import org.eclipse.jdt.ui.text.java.IProblemLocation;
import org.eclipse.jdt.ui.text.java.IQuickFixProcessor;
import org.eclipse.jdt.ui.text.java.correction.ICommandAccess;
-import org.eclipse.jdt.internal.ui.fix.NullQuickFixes;
import org.eclipse.jdt.internal.ui.text.correction.proposals.ReplaceCorrectionProposal;
import org.eclipse.jdt.internal.ui.text.correction.proposals.TaskMarkerProposal;
@@ -682,8 +681,8 @@ public class QuickFixProcessor implements IQuickFixProcessor {
case IProblem.IllegalReturnNullityRedefinition:
case IProblem.IllegalDefinitionToNonNullParameter:
case IProblem.IllegalRedefinitionToNonNullParameter:
- NullQuickFixes.addNullAnnotationInSignatureProposal(context, problem, proposals, false, true);
- NullQuickFixes.addNullAnnotationInSignatureProposal(context, problem, proposals, true, true);
+ NullAnnotationsCorrectionProcessor.addNullAnnotationInSignatureProposal(context, problem, proposals, false, true);
+ NullAnnotationsCorrectionProcessor.addNullAnnotationInSignatureProposal(context, problem, proposals, true, true);
break;
case IProblem.RequiredNonNullButProvidedNull:
case IProblem.RequiredNonNullButProvidedPotentialNull:
@@ -693,7 +692,7 @@ public class QuickFixProcessor implements IQuickFixProcessor {
case IProblem.NonNullLocalVariableComparisonYieldsFalse:
case IProblem.RedundantNullCheckOnNonNullLocalVariable:
case IProblem.RequiredNonNullButProvidedSpecdNullable:
- NullQuickFixes.addReturnAndArgumentTypeProposal(context, problem, proposals);
+ NullAnnotationsCorrectionProcessor.addReturnAndArgumentTypeProposal(context, problem, proposals);
break;
default:
}

Back to the top