diff --git a/java/java-impl/src/META-INF/JavaPlugin.xml b/java/java-impl/src/META-INF/JavaPlugin.xml index 3b08e7e5ba9a..7fd6e39094a9 100644 --- a/java/java-impl/src/META-INF/JavaPlugin.xml +++ b/java/java-impl/src/META-INF/JavaPlugin.xml @@ -432,6 +432,7 @@ + diff --git a/java/java-impl/src/com/intellij/pom/java/JdkVersionCollector.kt b/java/java-impl/src/com/intellij/pom/java/JdkVersionCollector.kt new file mode 100644 index 000000000000..4db669ee624b --- /dev/null +++ b/java/java-impl/src/com/intellij/pom/java/JdkVersionCollector.kt @@ -0,0 +1,39 @@ +// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.pom.java + +import com.intellij.internal.statistic.beans.MetricEvent +import com.intellij.internal.statistic.beans.newMetric +import com.intellij.internal.statistic.eventLog.FeatureUsageData +import com.intellij.internal.statistic.service.fus.collectors.ProjectUsagesCollector +import com.intellij.openapi.module.ModuleManager +import com.intellij.openapi.project.Project +import com.intellij.openapi.roots.ModuleRootManager +import com.intellij.util.lang.JavaVersion +import java.util.* + +class JdkVersionCollector : ProjectUsagesCollector() { + override fun getGroupId(): String { + return "java.jdk.version" + } + + public override fun getMetrics(project: Project): Set { + val sdks = ModuleManager.getInstance(project).modules.mapNotNullTo(HashSet()) { + ModuleRootManager.getInstance(it).sdk + } + + val jdkVersions = sdks.mapTo(HashSet()) { + JavaVersion.tryParse(it.versionString) + } + + return jdkVersions.mapTo(HashSet()) { + newMetric("MODULE_JDK_VERSION", FeatureUsageData().apply { + addData("feature", it?.feature ?: -1) + addData("minor", it?.minor ?: -1) + addData("update", it?.update ?: -1) + addData("ea", it?.ea ?: false) + }) + } + } + + override fun requiresReadAccess() = true +}