Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
Intellij Community
Commits
2dfebba9
Commit
2dfebba9
authored
6 years ago
by
Marat Khabibullin
Browse files
Options
Download
Email Patches
Plain Diff
Add FUSMetricsSetService
parent
bd209e4b
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
platform/platform-impl/src/com/intellij/internal/statistic/eventLog/EventLogExternalSettingsService.java
+7
-0
...l/statistic/eventLog/EventLogExternalSettingsService.java
platform/platform-impl/src/com/intellij/internal/statistic/eventLog/EventLogSettingsService.java
+3
-0
.../internal/statistic/eventLog/EventLogSettingsService.java
platform/platform-impl/src/com/intellij/internal/statistic/updater/StatisticsJobsScheduler.java
+5
-0
...j/internal/statistic/updater/StatisticsJobsScheduler.java
platform/platform-impl/src/com/intellij/internal/statistic/utils/metricsWhitelist/sets/FUSMetricsSet.java
+1
-1
.../statistic/utils/metricsWhitelist/sets/FUSMetricsSet.java
platform/platform-impl/src/com/intellij/internal/statistic/utils/metricsWhitelist/sets/FUSMetricsSetEP.java
+17
-0
...tatistic/utils/metricsWhitelist/sets/FUSMetricsSetEP.java
platform/platform-impl/src/com/intellij/internal/statistic/utils/metricsWhitelist/sets/FUSMetricsSetLoader.java
+27
-0
...stic/utils/metricsWhitelist/sets/FUSMetricsSetLoader.java
platform/platform-impl/src/com/intellij/internal/statistic/utils/metricsWhitelist/sets/FUSMetricsSetService.java
+17
-0
...tic/utils/metricsWhitelist/sets/FUSMetricsSetService.java
platform/platform-impl/src/com/intellij/internal/statistic/utils/metricsWhitelist/sets/FUSMetricsSetServiceImpl.java
+26
-0
...utils/metricsWhitelist/sets/FUSMetricsSetServiceImpl.java
platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml
+1
-0
...atform-resources/src/META-INF/PlatformExtensionPoints.xml
platform/platform-resources/src/META-INF/PlatformExtensions.xml
+2
-0
...rm/platform-resources/src/META-INF/PlatformExtensions.xml
platform/platform-tests/testSrc/com/intellij/internal/statistic/utils/metricsWhitelist/sets/FUSMetricsSetTest.java
+1
-1
...tistic/utils/metricsWhitelist/sets/FUSMetricsSetTest.java
with
107 additions
and
2 deletions
+107
-2
platform/platform-impl/src/com/intellij/internal/statistic/eventLog/EventLogExternalSettingsService.java
+
7
-
0
View file @
2dfebba9
...
...
@@ -23,6 +23,7 @@ public class EventLogExternalSettingsService extends SettingsConnectionService i
private
static
final
Logger
LOG
=
Logger
.
getInstance
(
"com.intellij.internal.statistic.eventLog.EventLogExternalSettingsService"
);
private
static
final
String
APPROVED_GROUPS_SERVICE
=
"white-list-service"
;
private
static
final
String
DICTIONARY_SERVICE
=
"dictionary-service"
;
private
static
final
String
METRICS_SET_SERVICE
=
"metrics-set"
;
private
static
final
String
PERCENT_TRAFFIC
=
"percent-traffic"
;
private
static
final
long
ACCEPTED_CACHE_AGE_MS
=
TimeUnit
.
MILLISECONDS
.
convert
(
7
,
TimeUnit
.
DAYS
);
private
static
final
long
DONT_REQUIRE_UPDATE_AGE_MS
=
TimeUnit
.
MILLISECONDS
.
convert
(
1
,
TimeUnit
.
DAYS
);
...
...
@@ -61,6 +62,12 @@ public class EventLogExternalSettingsService extends SettingsConnectionService i
return
getSettingValue
(
DICTIONARY_SERVICE
);
}
@Override
@Nullable
public
String
getMetricsSetServiceUrl
()
{
return
getSettingValue
(
METRICS_SET_SERVICE
);
}
@NotNull
public
Set
<
String
>
getApprovedGroups
()
{
return
getApprovedGroups
(
ApprovedGroupsCacheConfigurable
.
getInstance
());
...
...
This diff is collapsed.
Click to expand it.
platform/platform-impl/src/com/intellij/internal/statistic/eventLog/EventLogSettingsService.java
+
3
-
0
View file @
2dfebba9
...
...
@@ -12,6 +12,9 @@ public interface EventLogSettingsService {
@Nullable
String
getDictionaryServiceUrl
();
@Nullable
String
getMetricsSetServiceUrl
();
int
getPermittedTraffic
();
@NotNull
...
...
This diff is collapsed.
Click to expand it.
platform/platform-impl/src/com/intellij/internal/statistic/updater/StatisticsJobsScheduler.java
+
5
-
0
View file @
2dfebba9
...
...
@@ -13,6 +13,8 @@ import com.intellij.internal.statistic.service.fus.collectors.LegacyFUSProjectUs
import
com.intellij.internal.statistic.utils.StatisticsUploadAssistant
;
import
com.intellij.internal.statistic.utils.metricsWhitelist.dictionaries.FUSRegexDictionaryEP
;
import
com.intellij.internal.statistic.utils.metricsWhitelist.dictionaries.FUSRegexDictionaryService
;
import
com.intellij.internal.statistic.utils.metricsWhitelist.sets.FUSMetricsSetEP
;
import
com.intellij.internal.statistic.utils.metricsWhitelist.sets.FUSMetricsSetService
;
import
com.intellij.notification.impl.NotificationsConfigurationImpl
;
import
com.intellij.openapi.Disposable
;
import
com.intellij.openapi.application.ApplicationManager
;
...
...
@@ -142,5 +144,8 @@ public class StatisticsJobsScheduler implements BaseComponent {
private
static
void
preloadMetricsWhitelists
()
{
Set
<
String
>
dictionaryIds
=
FUSRegexDictionaryEP
.
EP_NAME
.
extensions
().
map
(
d
->
d
.
id
).
collect
(
Collectors
.
toSet
());
FUSRegexDictionaryService
.
getInstance
().
preloadDictionaries
(
dictionaryIds
);
Set
<
String
>
setIds
=
FUSMetricsSetEP
.
EP_NAME
.
extensions
().
map
(
d
->
d
.
id
).
collect
(
Collectors
.
toSet
());
FUSMetricsSetService
.
getInstance
().
preloadSets
(
setIds
);
}
}
This diff is collapsed.
Click to expand it.
platform/platform-impl/src/com/intellij/internal/statistic/utils/metricsWhitelist/set/FUSMetricsSet.java
→
platform/platform-impl/src/com/intellij/internal/statistic/utils/metricsWhitelist/set
s
/FUSMetricsSet.java
+
1
-
1
View file @
2dfebba9
// 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.internal.statistic.utils.metricsWhitelist.set
;
package
com.intellij.internal.statistic.utils.metricsWhitelist.set
s
;
import
com.google.gson.GsonBuilder
;
import
com.intellij.internal.statistic.utils.metricsWhitelist.core.DefaultMetricsWhitelistHeader
;
...
...
This diff is collapsed.
Click to expand it.
platform/platform-impl/src/com/intellij/internal/statistic/utils/metricsWhitelist/sets/FUSMetricsSetEP.java
0 → 100644
+
17
-
0
View file @
2dfebba9
// 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.internal.statistic.utils.metricsWhitelist.sets
;
import
com.intellij.openapi.extensions.AbstractExtensionPointBean
;
import
com.intellij.openapi.extensions.ExtensionPointName
;
import
com.intellij.util.xmlb.annotations.Attribute
;
/**
* Metrics sets registered via this extension point are downloaded from the remote server and cached on IDE startup.
*/
public
class
FUSMetricsSetEP
extends
AbstractExtensionPointBean
{
public
static
final
ExtensionPointName
<
FUSMetricsSetEP
>
EP_NAME
=
ExtensionPointName
.
create
(
"com.intellij.statistics.metricsWhitelist.metricsSet"
);
@Attribute
(
"id"
)
public
String
id
;
}
This diff is collapsed.
Click to expand it.
platform/platform-impl/src/com/intellij/internal/statistic/utils/metricsWhitelist/sets/FUSMetricsSetLoader.java
0 → 100644
+
27
-
0
View file @
2dfebba9
// 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.internal.statistic.utils.metricsWhitelist.sets
;
import
com.intellij.internal.statistic.eventLog.EventLogExternalSettingsService
;
import
com.intellij.internal.statistic.utils.metricsWhitelist.core.loader.RemoteMetricsWhitelistLoader
;
import
org.jetbrains.annotations.NotNull
;
import
org.jetbrains.annotations.Nullable
;
public
class
FUSMetricsSetLoader
extends
RemoteMetricsWhitelistLoader
<
FUSMetricsSet
>
{
public
FUSMetricsSetLoader
(
@NotNull
FUSMetricsSet
.
Factory
factory
)
{
super
(
factory
);
}
@Nullable
@Override
protected
String
getWhitelistHeaderUrl
(
@NotNull
String
metricsSetId
)
{
String
serviceUrl
=
EventLogExternalSettingsService
.
getInstance
().
getMetricsSetServiceUrl
();
return
serviceUrl
!=
null
?
serviceUrl
+
"header/"
+
metricsSetId
+
".json"
:
null
;
}
@Nullable
@Override
protected
String
getWhitelistUrl
(
@NotNull
String
metricsSetId
)
{
String
serviceUrl
=
EventLogExternalSettingsService
.
getInstance
().
getMetricsSetServiceUrl
();
return
serviceUrl
!=
null
?
serviceUrl
+
metricsSetId
+
".json"
:
null
;
}
}
This diff is collapsed.
Click to expand it.
platform/platform-impl/src/com/intellij/internal/statistic/utils/metricsWhitelist/sets/FUSMetricsSetService.java
0 → 100644
+
17
-
0
View file @
2dfebba9
// 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.internal.statistic.utils.metricsWhitelist.sets
;
import
com.intellij.openapi.components.ServiceManager
;
import
org.jetbrains.annotations.NotNull
;
import
java.util.Set
;
public
interface
FUSMetricsSetService
{
static
FUSMetricsSetService
getInstance
()
{
return
ServiceManager
.
getService
(
FUSMetricsSetService
.
class
);
}
boolean
containsMetric
(
@NotNull
String
metricsSetId
,
@NotNull
String
metric
);
void
preloadSets
(
@NotNull
Set
<
String
>
ids
);
}
This diff is collapsed.
Click to expand it.
platform/platform-impl/src/com/intellij/internal/statistic/utils/metricsWhitelist/sets/FUSMetricsSetServiceImpl.java
0 → 100644
+
26
-
0
View file @
2dfebba9
// 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.internal.statistic.utils.metricsWhitelist.sets
;
import
com.intellij.internal.statistic.utils.metricsWhitelist.core.cache.InMemoryMetricsWhitelistCache
;
import
org.jetbrains.annotations.NotNull
;
import
java.util.Set
;
public
class
FUSMetricsSetServiceImpl
implements
FUSMetricsSetService
{
private
final
InMemoryMetricsWhitelistCache
<
FUSMetricsSet
>
myCache
;
private
FUSMetricsSetServiceImpl
()
{
myCache
=
new
InMemoryMetricsWhitelistCache
<>(
new
FUSMetricsSetLoader
(
new
FUSMetricsSet
.
Factory
()));
}
@Override
public
boolean
containsMetric
(
@NotNull
String
metricsSetId
,
@NotNull
String
metric
)
{
FUSMetricsSet
metricsSet
=
myCache
.
get
(
metricsSetId
);
return
metricsSet
!=
null
&&
metricsSet
.
contains
(
metric
);
}
@Override
public
void
preloadSets
(
@NotNull
Set
<
String
>
ids
)
{
ids
.
forEach
(
myCache:
:
get
);
}
}
This diff is collapsed.
Click to expand it.
platform/platform-resources/src/META-INF/PlatformExtensionPoints.xml
+
1
-
0
View file @
2dfebba9
...
...
@@ -204,6 +204,7 @@
<extensionPoint
name=
"statistics.counterUsagesCollector"
beanClass=
"com.intellij.internal.statistic.service.fus.collectors.CounterUsageCollectorEP"
/>
<extensionPoint
name=
"statistics.metricsWhitelist.regexDictionary"
beanClass=
"com.intellij.internal.statistic.utils.metricsWhitelist.dictionaries.FUSRegexDictionaryEP"
/>
<extensionPoint
name=
"statistics.metricsWhitelist.metricsSet"
beanClass=
"com.intellij.internal.statistic.utils.metricsWhitelist.sets.FUSMetricsSetEP"
/>
<extensionPoint
name=
"editorHighlighterProvider"
beanClass=
"com.intellij.openapi.fileTypes.FileTypeExtensionPoint"
>
<with
attribute=
"implementationClass"
implements=
"com.intellij.openapi.fileTypes.EditorHighlighterProvider"
/>
...
...
This diff is collapsed.
Click to expand it.
platform/platform-resources/src/META-INF/PlatformExtensions.xml
+
2
-
0
View file @
2dfebba9
...
...
@@ -233,6 +233,8 @@
serviceImplementation=
"com.intellij.internal.statistic.eventLog.FeatureUsageUiEventsImpl"
/>
<applicationService
serviceInterface=
"com.intellij.internal.statistic.utils.metricsWhitelist.dictionaries.FUSRegexDictionaryService"
serviceImplementation=
"com.intellij.internal.statistic.utils.metricsWhitelist.dictionaries.FUSRegexDictionaryServiceImpl"
/>
<applicationService
serviceInterface=
"com.intellij.internal.statistic.utils.metricsWhitelist.sets.FUSMetricsSetService"
serviceImplementation=
"com.intellij.internal.statistic.utils.metricsWhitelist.sets.FUSMetricsSetServiceImpl"
/>
<applicationService
serviceImplementation=
"com.intellij.openapi.util.DimensionService"
/>
<applicationService
serviceInterface=
"com.intellij.openapi.util.WindowStateService"
...
...
This diff is collapsed.
Click to expand it.
platform/platform-tests/testSrc/com/intellij/internal/statistic/utils/metricsWhitelist/set/FUSMetricsSetTest.java
→
platform/platform-tests/testSrc/com/intellij/internal/statistic/utils/metricsWhitelist/set
s
/FUSMetricsSetTest.java
+
1
-
1
View file @
2dfebba9
// 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.internal.statistic.utils.metricsWhitelist.set
;
package
com.intellij.internal.statistic.utils.metricsWhitelist.set
s
;
import
com.intellij.internal.statistic.utils.metricsWhitelist.core.MetricsWhitelistHeader
;
import
org.junit.Test
;
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help