From 4916d33c32301862690627630a805bc7ee3d0750 Mon Sep 17 00:00:00 2001 From: Shi Chen Date: Mon, 30 Nov 2020 15:00:57 +0800 Subject: [PATCH] fix: Can emit group vertex and group event (#67) --- .../lsif/core/internal/indexer/Indexer.java | 9 +++- .../core/internal/indexer/VertexBuilder.java | 6 +++ .../lsif/core/internal/protocol/Event.java | 1 + .../lsif/core/internal/protocol/Group.java | 41 +++++++++++++++++++ .../lsif/core/internal/protocol/Vertex.java | 2 + 5 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/protocol/Group.java diff --git a/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/indexer/Indexer.java b/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/indexer/Indexer.java index 5a029c5..cee5309 100644 --- a/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/indexer/Indexer.java +++ b/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/indexer/Indexer.java @@ -48,8 +48,10 @@ import com.microsoft.java.lsif.core.internal.emitter.LsifEmitter; import com.microsoft.java.lsif.core.internal.protocol.Document; import com.microsoft.java.lsif.core.internal.protocol.Event; +import com.microsoft.java.lsif.core.internal.protocol.Group; import com.microsoft.java.lsif.core.internal.protocol.PackageInformation; import com.microsoft.java.lsif.core.internal.protocol.Project; +import com.microsoft.java.lsif.core.internal.protocol.Group.ConflictResolution; import com.microsoft.java.lsif.core.internal.visitors.DiagnosticVisitor; import com.microsoft.java.lsif.core.internal.visitors.DocumentVisitor; import com.microsoft.java.lsif.core.internal.visitors.LsifVisitor; @@ -114,7 +116,10 @@ private void buildIndex(IPath path, IProgressMonitor monitor, LsifService lsif) // ProjectConnection.getModel JavaLanguageServerPlugin.logException(e.getMessage(), e); } - + Group groupVertex = lsif.getVertexBuilder().group(ResourceUtils.fixURI(path.toFile().toURI()), ConflictResolution.TAKEDB, javaProject.getElementName(), ResourceUtils.fixURI(path.toFile().toURI())); + LsifEmitter.getInstance().emit(groupVertex); + LsifEmitter.getInstance().emit( + lsif.getVertexBuilder().event(Event.EventScope.Group, Event.EventKind.BEGIN, groupVertex.getId())); Project projVertex = lsif.getVertexBuilder().project(javaProject.getElementName()); LsifEmitter.getInstance().emit(projVertex); LsifEmitter.getInstance().emit( @@ -127,6 +132,8 @@ private void buildIndex(IPath path, IProgressMonitor monitor, LsifService lsif) VisitorUtils.endAllDocument(lsif); LsifEmitter.getInstance().emit( lsif.getVertexBuilder().event(Event.EventScope.Project, Event.EventKind.END, projVertex.getId())); + LsifEmitter.getInstance().emit( + lsif.getVertexBuilder().event(Event.EventScope.Group, Event.EventKind.END, groupVertex.getId())); } threadPool.shutdown(); diff --git a/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/indexer/VertexBuilder.java b/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/indexer/VertexBuilder.java index 2b2ee4c..116b07e 100644 --- a/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/indexer/VertexBuilder.java +++ b/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/indexer/VertexBuilder.java @@ -18,6 +18,7 @@ import com.microsoft.java.lsif.core.internal.protocol.Document; import com.microsoft.java.lsif.core.internal.protocol.DocumentSymbolResult; import com.microsoft.java.lsif.core.internal.protocol.Event; +import com.microsoft.java.lsif.core.internal.protocol.Group; import com.microsoft.java.lsif.core.internal.protocol.HoverResult; import com.microsoft.java.lsif.core.internal.protocol.ImplementationResult; import com.microsoft.java.lsif.core.internal.protocol.MetaData; @@ -30,6 +31,7 @@ import com.microsoft.java.lsif.core.internal.protocol.ReferenceResult; import com.microsoft.java.lsif.core.internal.protocol.ResultSet; import com.microsoft.java.lsif.core.internal.protocol.TypeDefinitionResult; +import com.microsoft.java.lsif.core.internal.protocol.Group.ConflictResolution; public final class VertexBuilder { @@ -47,6 +49,10 @@ public Event event(String scope, String kind, String data) { return new Event(generator.next(), scope, kind, data); } + public Group group(String uri, ConflictResolution resolution, String name, String rootUri) { + return new Group(generator.next(), uri, resolution, name, rootUri); + } + public Project project(String name) { return new Project(generator.next(), name); } diff --git a/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/protocol/Event.java b/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/protocol/Event.java index 501128d..a021e44 100644 --- a/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/protocol/Event.java +++ b/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/protocol/Event.java @@ -34,6 +34,7 @@ public String getData() { } public static class EventScope { + public static final String Group = "group"; public static final String Project = "project"; public static final String DOCUMENT = "document"; } diff --git a/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/protocol/Group.java b/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/protocol/Group.java new file mode 100644 index 0000000..562e31a --- /dev/null +++ b/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/protocol/Group.java @@ -0,0 +1,41 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +package com.microsoft.java.lsif.core.internal.protocol; + +public class Group extends Vertex { + + public enum ConflictResolution { + TAKEDUMP("takeDump"), TAKEDB("takeDB"); + + private final String resolution; + + private ConflictResolution(String resolution) { + this.resolution = resolution; + } + + @Override + public String toString() { + return this.resolution; + } + } + + private String uri; + + private String resolution; + + private String name; + + private String rootUri; + + public Group(String id, String uri, ConflictResolution resolution, String name, String rootUri) { + super(id, Vertex.GROUP); + this.uri = uri; + this.resolution = resolution.toString(); + this.name = name; + this.rootUri = rootUri; + } + +} diff --git a/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/protocol/Vertex.java b/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/protocol/Vertex.java index a01d347..cf3eb6a 100644 --- a/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/protocol/Vertex.java +++ b/com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/protocol/Vertex.java @@ -45,6 +45,8 @@ public class Vertex extends Element { public static final String IMPLEMENTATIONRESULT = "implementationResult"; + public static final String GROUP = "group"; + public static final String MONIKER = "moniker"; public static final String PACKAGEINFORMATION = "packageInformation";