jsonSchema: allow JsonSchemaProviderFactory#getResourceFile to accept relative or...
authorSergey Simonchik <sergey.simonchik@jetbrains.com>
Tue, 19 Apr 2016 14:02:22 +0000 (17:02 +0300)
committerSergey Simonchik <sergey.simonchik@jetbrains.com>
Tue, 19 Apr 2016 14:02:56 +0000 (17:02 +0300)
json/src/com/jetbrains/jsonSchema/extension/JsonSchemaProjectSelfProviderFactory.java
json/src/com/jetbrains/jsonSchema/extension/JsonSchemaProviderFactory.java

index e079613e4db51d7c7e4030043fa460c23e6245b0..20bf0b961a99cd4a6f6e8814506a076d4c97dc48 100644 (file)
@@ -15,7 +15,6 @@
  */
 package com.jetbrains.jsonSchema.extension;
 
-import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.util.Pair;
 import com.intellij.openapi.vfs.VirtualFile;
@@ -31,7 +30,6 @@ import java.util.List;
  * @author Irina.Chernushina on 2/24/2016.
  */
 public class JsonSchemaProjectSelfProviderFactory implements JsonSchemaProviderFactory {
-  private static final Logger LOG = Logger.getInstance("#com.jetbrains.jsonSchema.extension.JsonSchemaProjectSelfProviderFactory");
   public static final String SCHEMA_JSON_FILE_NAME = "schema.json";
   private final List<JsonSchemaFileProvider> myProviders;
 
@@ -61,7 +59,7 @@ public class JsonSchemaProjectSelfProviderFactory implements JsonSchemaProviderF
 
     @Override
     public VirtualFile getSchemaFile() {
-      return JsonSchemaProviderFactory.getResourceFile(JsonSchemaProjectSelfProviderFactory.class, "jsonSchema/schema.json");
+      return JsonSchemaProviderFactory.getResourceFile(JsonSchemaProjectSelfProviderFactory.class, "/jsonSchema/schema.json");
     }
 
     @Override
index ec7dbec0784891ac23288fde37ef11b919220e4a..83f60fa8bd9f5f54d91fe934a4c42ee37a37ffb5 100644 (file)
@@ -1,6 +1,6 @@
 package com.jetbrains.jsonSchema.extension;
 
-
+import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.extensions.ExtensionPointName;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.vfs.VfsUtil;
@@ -13,16 +13,29 @@ import java.util.List;
 
 public interface JsonSchemaProviderFactory {
   ExtensionPointName<JsonSchemaProviderFactory> EP_NAME = ExtensionPointName.create("JavaScript.JsonSchema.ProviderFactory");
+  Logger LOG = Logger.getInstance(JsonSchemaProviderFactory.class);
 
   List<JsonSchemaFileProvider> getProviders(@Nullable Project project);
 
+  /**
+   * Finds a {@link VirtualFile} instance corresponding to a specified resource path (relative or absolute).
+   *
+   * @param baseClass
+   * @param resourcePath  String identifying a resource (relative or absolute)
+   *                      See {@link Class#getResource(String)} for more details
+   * @return VirtualFile instance, or null if not found
+   */
   static VirtualFile getResourceFile(@NotNull Class baseClass, @NotNull String resourcePath) {
-    final ClassLoader loader = baseClass.getClassLoader();
-    final URL resource = loader.getResource(resourcePath);
-    assert resource != null;
-
-    final VirtualFile file = VfsUtil.findFileByURL(resource);
-    assert file != null;
+    URL url = baseClass.getResource(resourcePath);
+    if (url == null) {
+      LOG.error("Cannot find resource " + resourcePath);
+      return null;
+    }
+    VirtualFile file = VfsUtil.findFileByURL(url);
+    if (file == null) {
+      LOG.error("Cannot find file by " + resourcePath);
+      return null;
+    }
     return file;
   }
 }