LSP: Change method parameters should refactor access modifier.
diff --git a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/refactoring/ChangeMethodParametersRefactoring.java b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/refactoring/ChangeMethodParametersRefactoring.java index 6175429..0e5edc8 100644 --- a/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/refactoring/ChangeMethodParametersRefactoring.java +++ b/java/java.lsp.server/src/org/netbeans/modules/java/lsp/server/refactoring/ChangeMethodParametersRefactoring.java
@@ -25,6 +25,7 @@ import java.io.IOException; import java.util.Arrays; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.concurrent.CompletableFuture; @@ -208,6 +209,7 @@ model.withName(method.getSimpleName().toString()) .withReturnType(Utilities.getTypeName(ci, method.getReturnType(), true).toString()) .withSelectedModifier(mod) + .withIsStatic(method.getModifiers().contains(javax.lang.model.element.Modifier.STATIC)) .withParameters(params) .assignData(client, file, TreePathHandle.from(handle, ClasspathInfo.create(file))); model.applyBindings(); @@ -221,6 +223,7 @@ @Model(className = "ChangeMethodParameterUI", targetId = "", instance = true, builder = "with", properties = { @Property(name = "selectedModifier", type = Modifier.class), + @Property(name = "isStatic", type = boolean.class), @Property(name = "name", type = String.class), @Property(name = "returnType", type = String.class), @Property(name = "parameters", type = ParameterUI.class, array = true) @@ -243,6 +246,17 @@ void doRefactoring(ChangeMethodParameterUI ui) { try { ChangeParametersRefactoring refactoring = new ChangeParametersRefactoring(handle); + Modifier selectedModifier = ui.getSelectedModifier(); + if (selectedModifier != null) { + Set<javax.lang.model.element.Modifier> modifiers = new HashSet<>(1); + switch (selectedModifier) { + case PRIVATE: modifiers.add(javax.lang.model.element.Modifier.PRIVATE);break; + case PACKAGE_PRIVATE: break; /* no modifier */ + case PROTECTED: modifiers.add(javax.lang.model.element.Modifier.PROTECTED); break; + case PUBLIC: modifiers.add(javax.lang.model.element.Modifier.PUBLIC); break; + } + refactoring.setModifiers(modifiers); + } String returnType = ui.getReturnType(); refactoring.setReturnType(returnType.length() > 0 ? returnType : null); List<ParameterUI> parameters = ui.getParameters(); @@ -310,15 +324,19 @@ @ComputedProperty static String preview( - Modifier selectedModifier, String returnType, String name, List<ParameterUI> parameters + Modifier selectedModifier, boolean isStatic, String returnType, String name, List<ParameterUI> parameters ) { StringBuilder sb = new StringBuilder(); - sb.append(selectedModifier != null ? selectedModifier.javaName : "").append(" ").append(returnType); + sb.append(selectedModifier != null ? selectedModifier.javaName : "").append(" "); + if (isStatic) { + sb.append("static "); + } + sb.append(returnType); sb.append(" ").append(name).append("("); String sep = ""; for (ParameterUI p : parameters) { sb.append(sep); - sb.append(p.getType()).append(" ").append(p.getName()); + sb.append(p.getType() != null ? p.getType() : "").append(" ").append(p.getName() != null ? p.getName() : ""); sep = ", "; } sb.append(")");