Skip to content

Commit e7aaf87

Browse files
committed
Also read JDT UI project prefs to configure cleanups
Also logs unknown cleanups
1 parent 99ff5f0 commit e7aaf87

17 files changed

+121
-39
lines changed

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/JavaLanguageServerPlugin.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474

7575
public class JavaLanguageServerPlugin extends Plugin {
7676

77-
private static final String JDT_UI_PLUGIN = "org.eclipse.jdt.ui";
77+
public static final String JDT_UI_PLUGIN = "org.eclipse.jdt.ui";
7878
public static final String MANUAL = "Manual";
7979
public static final String DIRECT = "Direct";
8080
public static final String NATIVE = "Native";

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/AddDeprecatedAnnotationCleanUp.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
package org.eclipse.jdt.ls.core.internal.cleanup;
1414

1515
import java.util.Arrays;
16+
import java.util.Collection;
1617
import java.util.List;
1718

1819
import org.eclipse.jdt.core.JavaCore;
1920
import org.eclipse.jdt.core.manipulation.CleanUpContextCore;
2021
import org.eclipse.jdt.core.manipulation.ICleanUpFixCore;
22+
import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
2123
import org.eclipse.jdt.internal.corext.fix.Java50FixCore;
2224

2325
/**
@@ -29,8 +31,8 @@ public class AddDeprecatedAnnotationCleanUp implements ISimpleCleanUp {
2931
private static final List<String> COMPILER_OPTS = Arrays.asList(JavaCore.COMPILER_PB_MISSING_DEPRECATED_ANNOTATION);
3032

3133
@Override
32-
public String getIdentifier() {
33-
return "addDeprecated";
34+
public Collection<String> getIdentifiers() {
35+
return List.of("addDeprecated", CleanUpConstants.ADD_MISSING_ANNOTATIONS_DEPRECATED);
3436
}
3537

3638
@Override

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/AddOverrideAnnotationCleanUp.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
package org.eclipse.jdt.ls.core.internal.cleanup;
1414

1515
import java.util.Arrays;
16+
import java.util.Collection;
1617
import java.util.List;
1718

1819
import org.eclipse.jdt.core.JavaCore;
1920
import org.eclipse.jdt.core.manipulation.CleanUpContextCore;
2021
import org.eclipse.jdt.core.manipulation.ICleanUpFixCore;
22+
import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
2123
import org.eclipse.jdt.internal.corext.fix.Java50FixCore;
2224

2325
/**
@@ -29,8 +31,8 @@ public class AddOverrideAnnotationCleanUp implements ISimpleCleanUp {
2931
private static final List<String> COMPILER_OPTS = Arrays.asList(JavaCore.COMPILER_PB_MISSING_OVERRIDE_ANNOTATION);
3032

3133
@Override
32-
public String getIdentifier() {
33-
return "addOverride";
34+
public Collection<String> getIdentifiers() {
35+
return List.of("addOverride", CleanUpConstants.ADD_MISSING_ANNOTATIONS_OVERRIDE);
3436
}
3537

3638
@Override

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/CleanUpRegistry.java

+17-6
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,23 @@
1313
package org.eclipse.jdt.ls.core.internal.cleanup;
1414

1515
import java.util.ArrayList;
16+
import java.util.Collection;
1617
import java.util.Collections;
1718
import java.util.HashMap;
19+
import java.util.LinkedHashSet;
1820
import java.util.List;
1921
import java.util.Map;
20-
import java.util.Objects;
2122

2223
import org.eclipse.core.runtime.IProgressMonitor;
24+
import org.eclipse.core.runtime.Status;
2325
import org.eclipse.jdt.core.IBuffer;
2426
import org.eclipse.jdt.core.ICompilationUnit;
2527
import org.eclipse.jdt.core.IJavaProject;
2628
import org.eclipse.jdt.core.JavaCore;
2729
import org.eclipse.jdt.core.JavaModelException;
2830
import org.eclipse.jdt.core.manipulation.CleanUpContextCore;
2931
import org.eclipse.jdt.ls.core.internal.JDTUtils;
32+
import org.eclipse.jdt.ls.core.internal.JavaLanguageServerPlugin;
3033
import org.eclipse.lsp4j.TextDocumentIdentifier;
3134
import org.eclipse.lsp4j.TextEdit;
3235

@@ -55,7 +58,10 @@ public CleanUpRegistry() {
5558

5659
// Store in a Map so that they can be accessed by ID quickly
5760
cleanUps = new HashMap<>();
58-
cleanUpsList.forEach(cleanUp -> cleanUps.put(cleanUp.getIdentifier(), cleanUp));
61+
cleanUpsList.forEach(cleanUp ->
62+
cleanUp.getIdentifiers().forEach(id ->
63+
cleanUps.put(id, cleanUp)
64+
));
5965
}
6066

6167
/**
@@ -75,10 +81,15 @@ public List<TextEdit> getEditsForAllActiveCleanUps(TextDocumentIdentifier textDo
7581

7682
IJavaProject javaProject = JDTUtils.resolveCompilationUnit(textDocumentId.getUri()).getJavaProject();
7783

78-
List<ISimpleCleanUp> cleanUpsToRun = cleanUpEnabled.stream() //
79-
.distinct() //
80-
.map(cleanUpId -> cleanUps.get(cleanUpId)).filter(Objects::nonNull) //
81-
.toList();
84+
Collection<ISimpleCleanUp> cleanUpsToRun = new LinkedHashSet<>(cleanUpEnabled.size());
85+
for (String cleanUpId : cleanUpEnabled) {
86+
ISimpleCleanUp cleanUp = cleanUps.get(cleanUpId);
87+
if (cleanUp != null) {
88+
cleanUpsToRun.add(cleanUp);
89+
} else {
90+
JavaLanguageServerPlugin.log(Status.warning("Not found cleanup id: " + cleanUpId));
91+
}
92+
}
8293
if (cleanUpsToRun.isEmpty()) {
8394
return Collections.emptyList();
8495
}

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/CleanUpUtils.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public static TextEdit getTextEditFromCleanUp(ISimpleCleanUp cleanUp, CleanUpCon
7676
TextEdit jdtEdit = cleanUpChange.getEdit();
7777
return jdtEdit;
7878
} catch (CoreException e) {
79-
JavaLanguageServerPlugin.logError(String.format("Failed to create text edit for clean up %s", cleanUp.getIdentifier()));
79+
JavaLanguageServerPlugin.logError(String.format("Failed to create text edit for clean up %s", cleanUp.getIdentifiers().iterator().next()));
8080
}
8181
return null;
8282
}

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/ISimpleCleanUp.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
*******************************************************************************/
1313
package org.eclipse.jdt.ls.core.internal.cleanup;
1414

15+
import java.util.Collection;
1516
import java.util.List;
1617

1718
import org.eclipse.core.runtime.CoreException;
@@ -25,11 +26,11 @@
2526
public interface ISimpleCleanUp {
2627

2728
/**
28-
* Returns the unique identifier for this clean up.
29+
* Returns the possible identifiers for this clean up.
2930
*
30-
* @return the unique identifier for this clean up
31+
* @return the identifiers for this clean up
3132
*/
32-
String getIdentifier();
33+
Collection<String> getIdentifiers();
3334

3435
/**
3536
* Returns the cleanup fix for the given source file.

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/InstanceofPatternMatch.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.eclipse.jdt.core.dom.CompilationUnit;
2020
import org.eclipse.jdt.core.manipulation.CleanUpContextCore;
2121
import org.eclipse.jdt.core.manipulation.ICleanUpFixCore;
22+
import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
2223
import org.eclipse.jdt.internal.corext.fix.PatternMatchingForInstanceofFixCore;
2324

2425
/**
@@ -27,8 +28,8 @@
2728
public class InstanceofPatternMatch implements ISimpleCleanUp {
2829

2930
@Override
30-
public String getIdentifier() {
31-
return "instanceofPatternMatch";
31+
public List<String> getIdentifiers() {
32+
return List.of("instanceofPatternMatch", CleanUpConstants.USE_PATTERN_MATCHING_FOR_INSTANCEOF);
3233
}
3334

3435
@Override

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/InvertEqualsCleanUp.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.eclipse.jdt.core.dom.CompilationUnit;
2020
import org.eclipse.jdt.core.manipulation.CleanUpContextCore;
2121
import org.eclipse.jdt.core.manipulation.ICleanUpFixCore;
22+
import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
2223
import org.eclipse.jdt.internal.corext.fix.InvertEqualsFixCore;
2324

2425
/**
@@ -28,8 +29,8 @@
2829
public class InvertEqualsCleanUp implements ISimpleCleanUp {
2930

3031
@Override
31-
public String getIdentifier() {
32-
return "invertEquals";
32+
public List<String> getIdentifiers() {
33+
return List.of("invertEquals", CleanUpConstants.INVERT_EQUALS);
3334
}
3435

3536
@Override

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/LambdaExpressionAndMethodRefCleanUp.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
*******************************************************************************/
1313
package org.eclipse.jdt.ls.core.internal.cleanup;
1414

15+
import java.util.Collection;
1516
import java.util.Collections;
1617
import java.util.List;
1718

1819
import org.eclipse.core.runtime.CoreException;
1920
import org.eclipse.jdt.core.dom.CompilationUnit;
2021
import org.eclipse.jdt.core.manipulation.CleanUpContextCore;
2122
import org.eclipse.jdt.core.manipulation.ICleanUpFixCore;
23+
import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
2224
import org.eclipse.jdt.internal.corext.fix.LambdaExpressionAndMethodRefFixCore;
2325

2426
/**
@@ -27,8 +29,8 @@
2729
public class LambdaExpressionAndMethodRefCleanUp implements ISimpleCleanUp {
2830

2931
@Override
30-
public String getIdentifier() {
31-
return "lambdaExpression";
32+
public Collection<String> getIdentifiers() {
33+
return List.of("lambdaExpression", CleanUpConstants.SIMPLIFY_LAMBDA_EXPRESSION_AND_METHOD_REF);
3234
}
3335

3436
@Override

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/LambdaExpressionCleanup.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
*******************************************************************************/
1313
package org.eclipse.jdt.ls.core.internal.cleanup;
1414

15+
import java.util.Collection;
1516
import java.util.Collections;
1617
import java.util.List;
1718

1819
import org.eclipse.core.runtime.CoreException;
1920
import org.eclipse.jdt.core.dom.CompilationUnit;
2021
import org.eclipse.jdt.core.manipulation.CleanUpContextCore;
2122
import org.eclipse.jdt.core.manipulation.ICleanUpFixCore;
23+
import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
2224
import org.eclipse.jdt.internal.corext.fix.LambdaExpressionsFixCore;
2325

2426
/**
@@ -27,8 +29,8 @@
2729
public class LambdaExpressionCleanup implements ISimpleCleanUp {
2830

2931
@Override
30-
public String getIdentifier() {
31-
return "lambdaExpressionFromAnonymousClass";
32+
public Collection<String> getIdentifiers() {
33+
return List.of("lambdaExpressionFromAnonymousClass", CleanUpConstants.USE_LAMBDA);
3234
}
3335

3436
@Override

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/MemberAccessUsesThisCleanUp.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
*******************************************************************************/
1313
package org.eclipse.jdt.ls.core.internal.cleanup;
1414

15+
import java.util.Collection;
1516
import java.util.Collections;
1617
import java.util.List;
1718

@@ -28,8 +29,8 @@
2829
public class MemberAccessUsesThisCleanUp implements ISimpleCleanUp {
2930

3031
@Override
31-
public String getIdentifier() {
32-
return "qualifyMembers";
32+
public Collection<String> getIdentifiers() {
33+
return List.of("qualifyMembers");
3334
}
3435

3536
@Override

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/StaticAccessUsesClassNameCleanUp.java

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
*******************************************************************************/
1313
package org.eclipse.jdt.ls.core.internal.cleanup;
1414

15+
import java.util.Collection;
1516
import java.util.Collections;
1617
import java.util.List;
1718

@@ -28,8 +29,8 @@
2829
public class StaticAccessUsesClassNameCleanUp implements ISimpleCleanUp {
2930

3031
@Override
31-
public String getIdentifier() {
32-
return "qualifyStaticMembers";
32+
public Collection<String> getIdentifiers() {
33+
return List.of("qualifyStaticMembers");
3334
}
3435

3536
@Override

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/StringConcatToTextBlockCleanUp.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
*******************************************************************************/
1313
package org.eclipse.jdt.ls.core.internal.cleanup;
1414

15+
import java.util.Collection;
1516
import java.util.Collections;
1617
import java.util.List;
1718

1819
import org.eclipse.core.runtime.CoreException;
1920
import org.eclipse.jdt.core.dom.CompilationUnit;
2021
import org.eclipse.jdt.core.manipulation.CleanUpContextCore;
2122
import org.eclipse.jdt.core.manipulation.ICleanUpFixCore;
23+
import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
2224
import org.eclipse.jdt.internal.corext.fix.StringConcatToTextBlockFixCore;
2325

2426
/**
@@ -27,8 +29,8 @@
2729
public class StringConcatToTextBlockCleanUp implements ISimpleCleanUp {
2830

2931
@Override
30-
public String getIdentifier() {
31-
return "stringConcatToTextBlock";
32+
public Collection<String> getIdentifiers() {
33+
return List.of("stringConcatToTextBlock", CleanUpConstants.STRINGCONCAT_TO_TEXTBLOCK);
3234
}
3335

3436
@Override

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/SwitchExpressionCleanup.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
*******************************************************************************/
1313
package org.eclipse.jdt.ls.core.internal.cleanup;
1414

15+
import java.util.Collection;
1516
import java.util.Collections;
1617
import java.util.List;
1718

1819
import org.eclipse.core.runtime.CoreException;
1920
import org.eclipse.jdt.core.dom.CompilationUnit;
2021
import org.eclipse.jdt.core.manipulation.CleanUpContextCore;
2122
import org.eclipse.jdt.core.manipulation.ICleanUpFixCore;
23+
import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
2224
import org.eclipse.jdt.internal.corext.fix.SwitchExpressionsFixCore;
2325

2426
/**
@@ -27,8 +29,8 @@
2729
public class SwitchExpressionCleanup implements ISimpleCleanUp {
2830

2931
@Override
30-
public String getIdentifier() {
31-
return "switchExpression";
32+
public Collection<String> getIdentifiers() {
33+
return List.of("switchExpression", CleanUpConstants.CONTROL_STATEMENTS_CONVERT_TO_SWITCH_EXPRESSIONS);
3234
}
3335

3436
@Override

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/TryWithResourceCleanUp.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
*******************************************************************************/
1313
package org.eclipse.jdt.ls.core.internal.cleanup;
1414

15+
import java.util.Collection;
1516
import java.util.Collections;
1617
import java.util.List;
1718

1819
import org.eclipse.core.runtime.CoreException;
1920
import org.eclipse.jdt.core.dom.CompilationUnit;
2021
import org.eclipse.jdt.core.manipulation.CleanUpContextCore;
2122
import org.eclipse.jdt.core.manipulation.ICleanUpFixCore;
23+
import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
2224
import org.eclipse.jdt.internal.corext.fix.TryWithResourceFixCore;
2325

2426
/**
@@ -28,8 +30,8 @@
2830
public class TryWithResourceCleanUp implements ISimpleCleanUp {
2931

3032
@Override
31-
public String getIdentifier() {
32-
return "tryWithResource";
33+
public Collection<String> getIdentifiers() {
34+
return List.of("tryWithResource", CleanUpConstants.TRY_WITH_RESOURCE);
3335
}
3436

3537
@Override

org.eclipse.jdt.ls.core/src/org/eclipse/jdt/ls/core/internal/cleanup/VariableDeclarationFixCleanup.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@
1212
*******************************************************************************/
1313
package org.eclipse.jdt.ls.core.internal.cleanup;
1414

15+
import java.util.Collection;
1516
import java.util.Collections;
1617
import java.util.List;
1718

1819
import org.eclipse.core.runtime.CoreException;
1920
import org.eclipse.jdt.core.dom.CompilationUnit;
2021
import org.eclipse.jdt.core.manipulation.CleanUpContextCore;
2122
import org.eclipse.jdt.core.manipulation.ICleanUpFixCore;
23+
import org.eclipse.jdt.internal.corext.fix.CleanUpConstants;
2224
import org.eclipse.jdt.internal.corext.fix.VariableDeclarationFixCore;
2325

2426
/**
@@ -27,8 +29,8 @@
2729
public class VariableDeclarationFixCleanup implements ISimpleCleanUp {
2830

2931
@Override
30-
public String getIdentifier() {
31-
return "addFinalModifier";
32+
public Collection<String> getIdentifiers() {
33+
return List.of("addFinalModifier", CleanUpConstants.VARIABLE_DECLARATIONS_USE_FINAL);
3234
}
3335

3436
@Override

0 commit comments

Comments
 (0)