FUS-450 add project as parameter to FileTypeUsageSchemaDescriptor
authorAnastasia Ivanova <anastasia.ivanova@jetbrains.com>
Wed, 12 Aug 2020 10:16:58 +0000 (12:16 +0200)
committerintellij-monorepo-bot <intellij-monorepo-bot-no-reply@jetbrains.com>
Wed, 12 Aug 2020 13:15:15 +0000 (13:15 +0000)
GitOrigin-RevId: 28b6ef12d52f44fe9f4eca2b4fd3c42d075af47c

platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupUsageTracker.java
platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/fileTypes/FileTypeUsageCounterCollector.java
platform/platform-impl/src/com/intellij/internal/statistic/collectors/fus/fileTypes/FileTypeUsageSchemaDescriptor.java
plugins/gradle/java/src/config/GradleScriptTypeDetector.java
plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/JavaFxFileTypeFactory.java
plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/groovy/MavenGroovyScriptTypeDetector.java
plugins/maven/src/main/java/org/jetbrains/idea/maven/utils/MavenFileTypeFactory.java

index 27d9fdfab15e7543e30ece396f670bab3087736c..e774389315aaaa8e02e9371024262bbb9ef9c1bb 100644 (file)
@@ -120,7 +120,7 @@ final class LookupUsageTracker {
       if (file != null) {
         VirtualFile vFile = file.getVirtualFile();
         if (vFile != null) {
-          String schema = FileTypeUsageCounterCollector.findSchema(vFile);
+          String schema = FileTypeUsageCounterCollector.findSchema(myLookup.getProject(), vFile);
           if (schema != null) {
             data.addData("schema", schema);
           }
index 8ead46103e52ad7b9209ba22bdf933fe94fd023e..7f02f8d4f44a0d017ad245617124c23dde2cdee9 100644 (file)
@@ -76,30 +76,32 @@ public class FileTypeUsageCounterCollector extends CounterUsagesCollector {
   }
 
   public static void triggerOpen(@NotNull Project project, @NotNull VirtualFile file) {
-    OPEN.log(project, ArrayUtil.append(buildCommonEventPairs(file), IS_WRITABLE.with(file.isWritable())));
+    OPEN.log(project, ArrayUtil.append(buildCommonEventPairs(project, file), IS_WRITABLE.with(file.isWritable())));
   }
 
   public static void triggerClosed(@NotNull Project project, @NotNull VirtualFile file) {
-    CLOSE.log(project, ArrayUtil.append(buildCommonEventPairs(file), IS_WRITABLE.with(file.isWritable())));
+    CLOSE.log(project, ArrayUtil.append(buildCommonEventPairs(project, file), IS_WRITABLE.with(file.isWritable())));
   }
 
   private static void log(@NotNull VarargEventId eventId, @NotNull Project project, @NotNull VirtualFile file) {
-    eventId.log(project, buildCommonEventPairs(file));
+    eventId.log(project, buildCommonEventPairs(project, file));
   }
 
-  private static EventPair<?> @NotNull [] buildCommonEventPairs(@NotNull VirtualFile file) {
+  private static EventPair<?> @NotNull [] buildCommonEventPairs(@NotNull Project project,
+                                                                @NotNull VirtualFile file) {
     FileType fileType = file.getFileType();
     return new EventPair[]{EventFields.PluginInfoFromInstance.with(fileType),
       FILE_TYPE.with(FileTypeUsagesCollector.getSafeFileTypeName(fileType)),
       EventFields.AnonymizedPath.with(file.getPath()),
-      SCHEMA.with(findSchema(file))};
+      SCHEMA.with(findSchema(project, file))};
   }
 
   private static void logEmptyFile() {
     SELECT.log(EventFields.AnonymizedPath.with(null));
   }
 
-  public static @Nullable String findSchema(@NotNull VirtualFile file) {
+  public static @Nullable String findSchema(@NotNull Project project,
+                                            @NotNull VirtualFile file) {
     for (FileTypeUsageSchemaDescriptorEP<FileTypeUsageSchemaDescriptor> ext : EP.getExtensionList()) {
       FileTypeUsageSchemaDescriptor instance = ext.getInstance();
       if (ext.schema == null) {
@@ -107,7 +109,7 @@ public class FileTypeUsageCounterCollector extends CounterUsagesCollector {
         continue;
       }
 
-      if(instance.describes(file)) {
+      if (instance.describes(project, file)) {
         return getPluginInfo(instance.getClass()).isSafeToReport() ? ext.schema : "third.party";
       }
     }
index b311ba15988608ef3859a0656381196d3dd82f05..ba892f372d8b3eafc4885b7b650bf266fc8d019b 100644 (file)
@@ -1,15 +1,26 @@
-// 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.
+// Copyright 2000-2020 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.collectors.fus.fileTypes;
 
+import com.intellij.openapi.project.Project;
 import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.annotations.NotNull;
 
 public interface FileTypeUsageSchemaDescriptor {
   /**
+   * @deprecated use {@link FileTypeUsageSchemaDescriptor#describes(Project, VirtualFile)}
+   */
+  @Deprecated
+  default boolean describes(@NotNull VirtualFile file) {
+    return false;
+  }
+
+  /**
    * Is used to categorise file types usage statistics.
    * If a file has some generic file type (e.g. XML), this method allow specifying its 'schema' more precisely, e.g `Maven` or `Spring`.
    *
    * @return true if the given file has the schema name, given in the `schema` attribute of the `FileTypeUsageSchemaDescriptor` extension.
    */
-  boolean describes(@NotNull VirtualFile file);
+  default boolean describes(@NotNull Project project, @NotNull VirtualFile file) {
+    return describes(file);
+  }
 }
index bbc90d914ce67826d01faa89f47e48d55abecebe..25643d0838932a019ba2be6829e971a2befbbcb6 100644 (file)
@@ -1,8 +1,9 @@
-// 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.
+// Copyright 2000-2020 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 org.jetbrains.plugins.gradle.config;
 
 import com.intellij.internal.statistic.collectors.fus.fileTypes.FileTypeUsageSchemaDescriptor;
 import com.intellij.openapi.fileTypes.FileTypeRegistry;
+import com.intellij.openapi.project.Project;
 import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.plugins.gradle.util.GradleConstants;
@@ -25,7 +26,7 @@ public class GradleScriptTypeDetector extends GroovyScriptTypeDetector implement
   }
 
   @Override
-  public boolean describes(@NotNull VirtualFile file) {
+  public boolean describes(@NotNull Project project, @NotNull VirtualFile file) {
     String name = file.getName();
     return FileTypeRegistry.getInstance().isFileOfType(file, GroovyFileType.GROOVY_FILE_TYPE) &&
            (name.equals(GradleConstants.DEFAULT_SCRIPT_NAME) || name.equals(GradleConstants.SETTINGS_FILE_NAME));
index 5c20fbd0ac51487a2c24d259ef0c1c3ad1313e2f..b67e0ef9a6d017a577b1459b79b72456edb4ca01 100644 (file)
@@ -4,6 +4,7 @@ package org.jetbrains.plugins.javaFX.fxml;
 import com.intellij.internal.statistic.collectors.fus.fileTypes.FileTypeUsageSchemaDescriptor;
 import com.intellij.openapi.fileTypes.FileType;
 import com.intellij.openapi.fileTypes.FileTypeManager;
+import com.intellij.openapi.project.Project;
 import com.intellij.openapi.vfs.VirtualFile;
 import com.intellij.psi.PsiFile;
 import org.jetbrains.annotations.NonNls;
@@ -11,7 +12,7 @@ import org.jetbrains.annotations.NotNull;
 
 public final class JavaFxFileTypeFactory implements FileTypeUsageSchemaDescriptor {
   @Override
-  public boolean describes(@NotNull VirtualFile file) {
+  public boolean describes(@NotNull Project project, @NotNull VirtualFile file) {
     return isFxml(file);
   }
 
index 0c8504f839c8f98772c6683c837ccd6f58ceba80..fb205eda80d917d8a50d34db5e6b44568092c8f7 100644 (file)
@@ -1,22 +1,9 @@
-/*
- * Copyright 2000-2016 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+// Copyright 2000-2020 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 org.jetbrains.idea.maven.plugins.groovy;
 
 import com.intellij.internal.statistic.collectors.fus.fileTypes.FileTypeUsageSchemaDescriptor;
 import com.intellij.openapi.fileTypes.FileTypeRegistry;
+import com.intellij.openapi.project.Project;
 import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.plugins.groovy.GroovyFileType;
@@ -37,7 +24,7 @@ public class MavenGroovyScriptTypeDetector extends GroovyScriptTypeDetector impl
   }
 
   @Override
-  public boolean describes(@NotNull VirtualFile file) {
+  public boolean describes(@NotNull Project project, @NotNull VirtualFile file) {
     return isMavenGroovyScript(file);
   }
 
index 8344ba3d60ae76a079ca41492b933b2d35949f92..e0ac5cba96380dd4d1ac53c6d79ec2c2c26bc448 100644 (file)
@@ -1,23 +1,10 @@
-/*
- * Copyright 2000-2012 JetBrains s.r.o.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
+// Copyright 2000-2020 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 org.jetbrains.idea.maven.utils;
 
 import com.intellij.ide.highlighter.XmlFileType;
 import com.intellij.internal.statistic.collectors.fus.fileTypes.FileTypeUsageSchemaDescriptor;
 import com.intellij.openapi.fileTypes.FileTypeRegistry;
+import com.intellij.openapi.project.Project;
 import com.intellij.openapi.util.io.FileUtil;
 import com.intellij.openapi.vfs.VirtualFile;
 import org.jetbrains.annotations.NotNull;
@@ -28,7 +15,7 @@ import org.jetbrains.idea.maven.model.MavenConstants;
  */
 public class MavenFileTypeFactory implements FileTypeUsageSchemaDescriptor {
   @Override
-  public boolean describes(@NotNull VirtualFile file) {
+  public boolean describes(@NotNull Project project, @NotNull VirtualFile file) {
     return FileTypeRegistry.getInstance().isFileOfType(file, XmlFileType.INSTANCE) && FileUtil.namesEqual(file.getName(), MavenConstants.POM_XML);
   }
 }