Skip to content

Commit

Permalink
Report grammar identifier to didOpen telemetry events.
Browse files Browse the repository at this point in the history
- Fixes eclipse-lemminx#1105
- When exactly 1 grammar reference exists per file, simply send the
  relevant values (not a list of size 1). Otherwise, send the values as
  a list

Signed-off-by: Roland Grunberg <[email protected]>
  • Loading branch information
rgrunber committed Aug 23, 2021
1 parent d9ba63a commit 503a4ea
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 1 deletion.
1 change: 1 addition & 0 deletions USAGE_DATA.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ When telemetry events are enabled, the following information is emitted when the
* When a document is opened :
* The file extension (eg. `xml`, `xsd`, `dtd`)
* The associated grammar types (eg. `none`, `doctype`, `xml-model`, `xsi:schemaLocation`, `xsi:noNamespaceSchemaLocation`)
* The grammar identifiers for an XML document (eg. `http://maven.apache.org/xsd/maven-4.0.0.xsd`)
* The resolver used to resolve the grammar identifier (eg. `catalog`, `file association`, `embedded catalog.xsd`, `embedded xml.xsd`, `embedded xslt.xsd`)
* Note: Does NOT include the `JAVA_HOME` environment variable for privacy reasons

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public class DocumentTelemetryInfo {

private static final String DOC_PROP_EXT = "file.extension";
private static final String DOC_PROP_RESOLVER = "file.resolver";
private static final String DOC_PROP_IDENTIFIER = "file.identifier";
private static final String DOC_PROP_GRAMMAR_NONE = "file.grammar.none";
private static final String DOC_PROP_GRAMMAR_DOCTYPE = "file.grammar.doctype";
private static final String DOC_PROP_GRAMMAR_XMLMODEL = "file.grammar.xmlmodel";
Expand All @@ -45,9 +46,11 @@ public static Map<String, Object> getDocumentTelemetryInfo (DOMDocument doc, Con
}
} else {
List<String> resolvers = new ArrayList<String>();
List<String> identifiers = new ArrayList<String>();
for (ReferencedGrammarInfo info : referencedGrammarInfos) {
String kind = info.getBindingKind() == null ? "none" : info.getBindingKind();
String resolver = info.getResolvedBy();
String identifier = info.getIdentifierURI();
if ("xml".equals(fileExtension)) {
switch (kind) {
case "none":
Expand All @@ -67,10 +70,25 @@ public static Map<String, Object> getDocumentTelemetryInfo (DOMDocument doc, Con
break;
}
}
if (identifier != null) {
int limit = Math.min(identifier.length(), 200); // 200 char limit
identifiers.add(identifier.substring(0, limit));
}
resolvers.add(resolver == null ? "default" : resolver);
}

props.put(DOC_PROP_RESOLVER, resolvers);
if (resolvers.size() == 1) {
props.put(DOC_PROP_RESOLVER, resolvers.iterator().next());
} else {
props.put(DOC_PROP_RESOLVER, resolvers);
}
if (!identifiers.isEmpty()) {
if (identifiers.size() == 1) {
props.put(DOC_PROP_IDENTIFIER, identifiers.iterator().next());
} else {
props.put(DOC_PROP_IDENTIFIER, identifiers);
}
}
}
return props;
}
Expand Down

0 comments on commit 503a4ea

Please sign in to comment.