下面列出了怎么用org.eclipse.lsp4j.ResourceOperationKind的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public ResourceOperation read(JsonReader in) throws IOException {
JsonObject objectJson = new JsonParser().parse(in).getAsJsonObject();
JsonElement value = objectJson.get("kind");
if (value != null && value.isJsonPrimitive()) {
String kindValue = value.getAsString();
if (ResourceOperationKind.Create.equals(kindValue)) {
return createFileAdapter.fromJsonTree(objectJson);
} else if (ResourceOperationKind.Delete.equals(kindValue)) {
return deleteFileAdapter.fromJsonTree(objectJson);
} else if (ResourceOperationKind.Rename.equals(kindValue)) {
return renameFileAdapter.fromJsonTree(objectJson);
}
}
throw new JsonParseException(
"The ResourceOperation object either has null \"kind\" value or the \"kind\" value is not valid.");
}
@Test
public void localSchemaFileMissingCodeAction() throws Exception {
String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + //
"<invoice xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" + //
" xsi:noNamespaceSchemaLocation=\"/salad.xsd\">\n" + //
"</invoice>";
Diagnostic missingSchemaDiagnostic = d(2, 32, 44, XMLSchemaErrorCode.schema_reference_4);
missingSchemaDiagnostic.setMessage("schema_reference.4: Failed to read schema document "
+ "'file:///salad.xsd',"
+ " because 1) could not find the document; 2) the document could not be read;"
+ " 3) the root element of the document is not <xsd:schema>.");
Diagnostic eltDiagnostic = d(1, 1, 8, XMLSchemaErrorCode.cvc_elt_1_a);
eltDiagnostic.setMessage("cvc-elt.1.a: Cannot find the declaration of element 'invoice'.");
XMLAssert.testDiagnosticsFor(xml, missingSchemaDiagnostic, eltDiagnostic);
SharedSettings settings = new SharedSettings();
WorkspaceClientCapabilities workspace = new WorkspaceClientCapabilities();
WorkspaceEditCapabilities workspaceEdit = new WorkspaceEditCapabilities();
workspaceEdit.setResourceOperations(Arrays.asList(ResourceOperationKind.Create));
workspace.setWorkspaceEdit(workspaceEdit);
settings.getWorkspaceSettings().setCapabilities(workspace);
XMLAssert.testCodeActionsFor(xml, //
missingSchemaDiagnostic, //
settings, //
ca(missingSchemaDiagnostic, //
createFile("file:///salad.xsd", false), //
teOp("file:///salad.xsd", 0, 0, 0, 0, //
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + lineSeparator() + //
"<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\">" + lineSeparator() + //
" <xs:element name=\"invoice\" type=\"xs:string\" />" + lineSeparator() + //
"</xs:schema>")));
}
private static InitializeResult initServer(Process p, LanguageServer server, FileObject root) throws InterruptedException, ExecutionException {
InitializeParams initParams = new InitializeParams();
initParams.setRootUri(Utils.toURI(root));
initParams.setRootPath(FileUtil.toFile(root).getAbsolutePath()); //some servers still expect root path
initParams.setProcessId(0);
TextDocumentClientCapabilities tdcc = new TextDocumentClientCapabilities();
DocumentSymbolCapabilities dsc = new DocumentSymbolCapabilities();
dsc.setHierarchicalDocumentSymbolSupport(true);
dsc.setSymbolKind(new SymbolKindCapabilities(Arrays.asList(SymbolKind.values())));
tdcc.setDocumentSymbol(dsc);
WorkspaceClientCapabilities wcc = new WorkspaceClientCapabilities();
wcc.setWorkspaceEdit(new WorkspaceEditCapabilities());
wcc.getWorkspaceEdit().setDocumentChanges(true);
wcc.getWorkspaceEdit().setResourceOperations(Arrays.asList(ResourceOperationKind.Create, ResourceOperationKind.Delete, ResourceOperationKind.Rename));
initParams.setCapabilities(new ClientCapabilities(wcc, tdcc, null));
CompletableFuture<InitializeResult> initResult = server.initialize(initParams);
while (true) {
try {
return initResult.get(100, TimeUnit.MILLISECONDS);
} catch (TimeoutException ex) {
if (p != null && !p.isAlive()) {
InitializeResult emptyResult = new InitializeResult();
emptyResult.setCapabilities(new ServerCapabilities());
return emptyResult;
}
}
}
}
public boolean isResourceOperationSupported() {
//@formatter:off
return capabilities.getWorkspace() != null
&& capabilities.getWorkspace().getWorkspaceEdit() != null
&& capabilities.getWorkspace().getWorkspaceEdit().getResourceOperations() != null
&& capabilities.getWorkspace().getWorkspaceEdit().getResourceOperations().contains(ResourceOperationKind.Create)
&& capabilities.getWorkspace().getWorkspaceEdit().getResourceOperations().contains(ResourceOperationKind.Rename)
&& capabilities.getWorkspace().getWorkspaceEdit().getResourceOperations().contains(ResourceOperationKind.Delete);
//@formatter:on
}
public CreateFile() {
super(ResourceOperationKind.Create);
}
public CreateFile(@NonNull final String uri) {
super(ResourceOperationKind.Create);
this.uri = Preconditions.<String>checkNotNull(uri, "uri");
}
public CreateFile(@NonNull final String uri, final CreateFileOptions options) {
super(ResourceOperationKind.Create);
this.uri = Preconditions.<String>checkNotNull(uri, "uri");
this.options = options;
}
public RenameFile() {
super(ResourceOperationKind.Rename);
}
public RenameFile(@NonNull final String oldUri, @NonNull final String newUri) {
super(ResourceOperationKind.Rename);
this.oldUri = Preconditions.<String>checkNotNull(oldUri, "oldUri");
this.newUri = Preconditions.<String>checkNotNull(newUri, "newUri");
}
public RenameFile(@NonNull final String oldUri, @NonNull final String newUri, final RenameFileOptions options) {
super(ResourceOperationKind.Rename);
this.oldUri = Preconditions.<String>checkNotNull(oldUri, "oldUri");
this.newUri = Preconditions.<String>checkNotNull(newUri, "newUri");
this.options = options;
}
public DeleteFile() {
super(ResourceOperationKind.Delete);
}
public DeleteFile(@NonNull final String uri) {
super(ResourceOperationKind.Delete);
this.uri = Preconditions.<String>checkNotNull(uri, "uri");
}
public DeleteFile(@NonNull final String uri, final DeleteFileOptions options) {
super(ResourceOperationKind.Delete);
this.uri = Preconditions.<String>checkNotNull(uri, "uri");
this.options = options;
}