in src/main/java/software/amazon/smithy/lsp/SmithyTextDocumentService.java [212:239]
public void recompile(File path, Optional<File> original) {
Either<Exception, ValidatedResult<Model>> loadedModel = SmithyInterface.readModel(path);
String changedFileUri = original.map(File::getAbsolutePath).orElse(path.getAbsolutePath());
client.ifPresent(cl -> {
if (loadedModel.isLeft()) {
cl.showMessage(msg(MessageType.Error, changedFileUri + " is not okay!" + loadedModel.getLeft().toString()));
} else {
ValidatedResult<Model> result = loadedModel.getRight();
if (result.isBroken()) {
List<ValidationEvent> events = result.getValidationEvents();
List<Diagnostic> msgs = events.stream().map(ev -> ProtocolAdapter.toDiagnostic(ev))
.collect(Collectors.toList());
PublishDiagnosticsParams diagnostics = createDiagnostics(changedFileUri, msgs);
cl.publishDiagnostics(diagnostics);
} else {
if (!original.isPresent()) {
result.getResult().ifPresent(m -> updateLocations(m));
}
cl.publishDiagnostics(createDiagnostics(changedFileUri, Arrays.asList()));
}
}
});
}