Skip to content

Commit bbf499f

Browse files
committed
refactor: catch possible JSON conversion exception, unify branches
1 parent 64f9ed6 commit bbf499f

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

org.eclipse.lsp4e/src/org/eclipse/lsp4e/LanguageServerWrapper.java

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,38 +1100,37 @@ public void registerCapability(RegistrationParams params) {
11001100
}
11011101
break;
11021102
case "workspace/executeCommand": //$NON-NLS-1$
1103-
final var gson = new Gson(); // TODO? retrieve the GSon used by LS
1104-
ExecuteCommandOptions executeCommandOptions = castNonNull(gson.fromJson((JsonObject) reg.getRegisterOptions(),
1105-
ExecuteCommandOptions.class));
1106-
List<String> newCommands = executeCommandOptions.getCommands();
1107-
if (!newCommands.isEmpty()) {
1108-
addRegistration(reg, () -> unregisterCommands(newCommands));
1109-
registerCommands(newCommands);
1103+
try {
1104+
ExecuteCommandOptions executeCommandOptions = castNonNull(new Gson().fromJson((JsonObject) reg.getRegisterOptions(),
1105+
ExecuteCommandOptions.class));
1106+
List<String> newCommands = executeCommandOptions.getCommands();
1107+
if (!newCommands.isEmpty()) {
1108+
addRegistration(reg, () -> unregisterCommands(newCommands));
1109+
registerCommands(newCommands);
1110+
}
1111+
} catch (final Exception ex) {
1112+
LanguageServerPlugin.logError(ex);
11101113
}
11111114
break;
11121115
case "textDocument/formatting": //$NON-NLS-1$
11131116
Either<Boolean, DocumentFormattingOptions> documentFormattingProvider = serverCapabilities
11141117
.getDocumentFormattingProvider();
11151118
if (documentFormattingProvider == null || documentFormattingProvider.isLeft()) {
11161119
serverCapabilities.setDocumentFormattingProvider(Boolean.TRUE);
1117-
addRegistration(reg, () -> serverCapabilities.setDocumentFormattingProvider(documentFormattingProvider));
11181120
} else {
11191121
serverCapabilities.setDocumentFormattingProvider(documentFormattingProvider.getRight());
1120-
addRegistration(reg, () -> serverCapabilities.setDocumentFormattingProvider(documentFormattingProvider));
11211122
}
1123+
addRegistration(reg, () -> serverCapabilities.setDocumentFormattingProvider(documentFormattingProvider));
11221124
break;
11231125
case "textDocument/rangeFormatting": //$NON-NLS-1$
11241126
Either<Boolean, DocumentRangeFormattingOptions> documentRangeFormattingProvider = serverCapabilities
11251127
.getDocumentRangeFormattingProvider();
11261128
if (documentRangeFormattingProvider == null || documentRangeFormattingProvider.isLeft()) {
11271129
serverCapabilities.setDocumentRangeFormattingProvider(Boolean.TRUE);
1128-
addRegistration(reg, () -> serverCapabilities
1129-
.setDocumentRangeFormattingProvider(documentRangeFormattingProvider));
11301130
} else {
11311131
serverCapabilities.setDocumentRangeFormattingProvider(documentRangeFormattingProvider.getRight());
1132-
addRegistration(reg, () -> serverCapabilities
1133-
.setDocumentRangeFormattingProvider(documentRangeFormattingProvider));
11341132
}
1133+
addRegistration(reg, () -> serverCapabilities.setDocumentRangeFormattingProvider(documentRangeFormattingProvider));
11351134
break;
11361135
case "textDocument/codeAction": //$NON-NLS-1$
11371136
final Either<Boolean, CodeActionOptions> beforeRegistration = serverCapabilities.getCodeActionProvider();
@@ -1160,11 +1159,10 @@ public void registerCapability(RegistrationParams params) {
11601159
.getSelectionRangeProvider();
11611160
if (selectionRangeProvider == null || selectionRangeProvider.isLeft()) {
11621161
serverCapabilities.setSelectionRangeProvider(Boolean.TRUE);
1163-
addRegistration(reg, () -> serverCapabilities.setSelectionRangeProvider(selectionRangeProvider));
11641162
} else {
11651163
serverCapabilities.setSelectionRangeProvider(selectionRangeProvider.getRight());
1166-
addRegistration(reg, () -> serverCapabilities.setSelectionRangeProvider(selectionRangeProvider));
11671164
}
1165+
addRegistration(reg, () -> serverCapabilities.setSelectionRangeProvider(selectionRangeProvider));
11681166
break;
11691167
case "textDocument/typeHierarchy": //$NON-NLS-1$
11701168
final Either<Boolean, TypeHierarchyRegistrationOptions> typeHierarchyBeforeRegistration = serverCapabilities.getTypeHierarchyProvider();

0 commit comments

Comments
 (0)