diff --git a/java/java-impl/src/META-INF/libraryJarUsage.xml b/java/java-impl/src/META-INF/libraryJarUsage.xml index f161458db995..0999b9618e1d 100644 --- a/java/java-impl/src/META-INF/libraryJarUsage.xml +++ b/java/java-impl/src/META-INF/libraryJarUsage.xml @@ -1,6 +1,7 @@ + diff --git a/java/java-impl/src/com/intellij/internal/statistic/libraryJar/LibraryJarDescriptor.java b/java/java-impl/src/com/intellij/internal/statistic/libraryJar/LibraryJarDescriptor.java index e824b8f65956..3cf81e81db36 100644 --- a/java/java-impl/src/com/intellij/internal/statistic/libraryJar/LibraryJarDescriptor.java +++ b/java/java-impl/src/com/intellij/internal/statistic/libraryJar/LibraryJarDescriptor.java @@ -23,6 +23,9 @@ import com.intellij.util.xmlb.annotations.Tag; */ @Tag("technology") public class LibraryJarDescriptor { + + public static final LibraryJarDescriptor[] EMPTY = new LibraryJarDescriptor[0]; + /** * Name of library/framework */ diff --git a/java/java-impl/src/com/intellij/internal/statistic/libraryJar/LibraryJarStatisticsService.java b/java/java-impl/src/com/intellij/internal/statistic/libraryJar/LibraryJarStatisticsService.java index 2a98added970..68f5ac2b8c7f 100644 --- a/java/java-impl/src/com/intellij/internal/statistic/libraryJar/LibraryJarStatisticsService.java +++ b/java/java-impl/src/com/intellij/internal/statistic/libraryJar/LibraryJarStatisticsService.java @@ -16,6 +16,12 @@ package com.intellij.internal.statistic.libraryJar; import com.intellij.facet.frameworks.SettingsConnectionService; +import com.intellij.internal.statistic.StatisticsUploadAssistant; +import com.intellij.openapi.application.Application; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.project.Project; +import com.intellij.openapi.startup.StartupActivity; +import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.net.HttpConfigurable; import com.intellij.util.xmlb.XmlSerializationException; @@ -30,7 +36,7 @@ import java.net.URL; /** * @author Ivan Chirkov */ -public class LibraryJarStatisticsService extends SettingsConnectionService { +public class LibraryJarStatisticsService extends SettingsConnectionService implements StartupActivity { private static final String FILE_NAME = "statistics/library-jar-statistics.xml"; private static final String DEFAULT_SETTINGS_URL = "http://www.jetbrains.com/idea/download-assistant.xml"; @@ -50,10 +56,11 @@ public class LibraryJarStatisticsService extends SettingsConnectionService { @NotNull public LibraryJarDescriptor[] getTechnologyDescriptors() { if (myDescriptors == null) { + if (!StatisticsUploadAssistant.isSendAllowed()) return LibraryJarDescriptor.EMPTY; final URL url = createVersionsUrl(); - if (url == null) return new LibraryJarDescriptor[0]; + if (url == null) return LibraryJarDescriptor.EMPTY; final LibraryJarDescriptors descriptors = deserialize(url); - myDescriptors = descriptors == null ? new LibraryJarDescriptor[0] : descriptors.getDescriptors(); + myDescriptors = descriptors == null ? LibraryJarDescriptor.EMPTY : descriptors.getDescriptors(); } return myDescriptors; } @@ -91,4 +98,21 @@ public class LibraryJarStatisticsService extends SettingsConnectionService { return null; } + + @Override + public void runActivity(@NotNull Project project) { + final Application application = ApplicationManager.getApplication(); + if (application.isUnitTestMode() || application.isHeadlessEnvironment()) return; + StartupManager.getInstance(project).runWhenProjectIsInitialized(new Runnable() { + @Override + public void run() { + ApplicationManager.getApplication().executeOnPooledThread(new Runnable() { + @Override + public void run() { + getInstance().getTechnologyDescriptors(); + } + }); + } + }); + } }